2014-02-25 22 views
2

我有一個具有登錄屏幕的asp.net webforms應用程序。當我點擊登錄按鈕時,第一次點擊時User.Identity.IsAuthenticated始終爲false。下面是在登錄的代碼:User.Identity.IsAuthenticated在第一次點擊時總是爲false?

protected void SignIn(object sender, EventArgs e) 
    { 
     var userStore = new UserStore<ApplicationUser>(); 
     var userManager = new UserManager<ApplicationUser>(userStore); 
     var user = userManager.Find(UserName.Text, Password.Text); 

     if (user != null && user.PasswordRetryCount < 3) 
     { 
      Session["UserName"] = user.UserName; 

      var authenticationManager = HttpContext.Current.GetOwinContext().Authentication; 
      var userIdentity = userManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie); 

      authenticationManager.SignIn(new AuthenticationProperties {IsPersistent = false}, userIdentity); 

      if (User.Identity.IsAuthenticated) //false on first click 
       Response.Redirect("Default.aspx"); 
     } 
    } 

回答

1

而不是做的:

if (User.Identity.IsAuthenticated)檢查用戶是否authenticatd,我也檢查了IdentityResult下列財產,這似乎很好地工作:

if (userIdentity.IsAuthenticated)

0

酒店User.Identity.IsAuthenticated將充滿基於餅乾從HttpRequest的一個應用程序的認證活動。所以,在你的情況下,這個屬性將具有「假」價值。

3

您已登錄用戶,但設置IsAuthenticated標誌的事件和值不會運行,直到您的下一個請求。您仍處於未經身份驗證的請求的上下文中。

authenticationManager.SignIn(..)的返回值是多少?如果它返回一個bool或任何其他信息,告訴您是否成功通過身份驗證,則可以將其用作if語句的標誌。

+0

我怎樣才能解決這個問題,因爲會發生什麼是我輸入用戶名和密碼,然後密碼字段清除,我必須再次輸入它,然後我去到網站的不同部分。 – xaisoft

+0

看看這個類似的問題:http://stackoverflow.com/questions/17642630/user-identity-isauthenticated-is-false-after-successful-login –

+0

我看到了,但我不明白它可以如何幫助我避免讓用戶輸入兩次密碼。 – xaisoft

相關問題