2016-05-19 12 views
1

NET MVC 5シンプルメンバーシッププロバイダ。すべてがうまくいけばユーザーを作成するときにログインしたが、後で彼についての情報を探したい。しかし、私はログインしたユーザーを取得することはできません。ログインした後に現在のユーザーを取得できないのはなぜですか?

[AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Register(RegisterViewModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; 
      var result = UserManager.Create(user, model.Password); 
      if (result.Succeeded) 
      { 

       SignInManager.SignIn(user, isPersistent: false, rememberBrowser: false); 
       var id = User.Identity.GetUserId(); 

だから私は、デバッグだとUser.Identity.GetUserId();そのnullに行くとき:これは私のコードです。それをチェックアウト:

enter image description here

enter image description here

+2

あなたはすでにユーザーID: 'user.Id'を知っています。 'User.Identity'はリクエストのプロパティを調べ、まだ設定されていないので、あなたは認証されていないとみなされます。クッキーがクライアント上で設定されるため、クライアントからの** next **リクエストには正しいビットが設定されます。 –

+0

@BrendanGreen実際に役立ちます。次のリクエストでその理由が分かっていますか? –

答えて

0

あなたSignIn方法は、現在のログに記録されたアイデンティティについてのクッキーや店舗情報を作成する必要があります。そのため、ユーザーに関する情報を取得する前に、別の要求で実行する必要があります。 Cookieが作成され、最初に更新されます

私の場合は、User.Identity.IsAuthenticated()がtrueであるかどうかをチェックしてから、User.Identity.Nameを使用してユーザー名を取得します。これは文字列形式を返します

関連する問題