我有一个使用ASP.NET成员资格的登录页面。一旦我验证了用户,我需要在Session变量中存储一些关于它们的细节。问题是
Membership.GetUser() == null and
User.Identity.IsAuthenticated == false
直到我离开页面。
我尝试过使用
FormsAuthentication.Authenticate(tbUsername.Text, tbPassword.Text);
并检查User.Identity.IsAuthenticated,但它返回false,直到我到达另一个页面。有什么建议吗?
答案 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