User.Identity.IsAuthenticated false,直到从登录页面重定向

时间:2009-05-13 11:30:59

标签: asp.net-membership

我有一个使用ASP.NET成员资格的登录页面。一旦我验证了用户,我需要在Session变量中存储一些关于它们的细节。问题是

Membership.GetUser() == null and 
User.Identity.IsAuthenticated == false 

直到我离开页面。

我尝试过使用

FormsAuthentication.Authenticate(tbUsername.Text, tbPassword.Text);

并检查User.Identity.IsAuthenticated,但它返回false,直到我到达另一个页面。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

好吧,FormsAuthentication.Authenticate()会返回boolean,因此您将知道身份验证是否成功。如果是,您可以将用户的用户名传递给Membership.GetUser()并访问返回的MembershipUser对象以获取您需要的任何数据并将其存储在会话中。

if (FormsAuthentication.Authenticate(tbUsername.Text, tbUsername.Text)) {
   MembershipUser user = Membership.GetUser(tbUsername.Text);
   // Set session variables here.
   FormsAuthentication.RedirectFromLoginPage(tbUsername.Text, rememberMe.Checked);
}

答案 1 :(得分:2)

取决于你是怎么做的,但是如果你没有使用ASP登录控件并且你正在做auth,你需要像这样设置AuthCookie ......

string userName = UserName.Text;
string password = Password.Text;

if (Membership.ValidateUser(userName, password))
{
   FormsAuthentication.SetAuthCookie(userName, true);

   MembershipUser user = Membership.GetUser();

   if(user != null){
      // success
   }
   else{
      // failed
   }
}

答案 2 :(得分:0)

如果您没有使用Login控件,您是否尝试过调用FormsAuthentication.RedirectFromLoginPage(authorizedUserName,createPersistantCookie);并在那之后检查?

如果您使用的是Login控件,那么您可以使用控件上的事件来获取所需的数据,例如LoggedIn

相关问题