我想在用户登录后立即检查他是否被禁止..但我有以下问题:
protected void Login1_LoggedIn(object sender, EventArgs e)
{
MembershipUser CurrentUser = Membership.GetUser();
Guid i = (Guid)CurrentUser.ProviderUserKey; //CurrentUser is null
if (UsefulStaticMethods.CheckIfUserISbanned(i))
{
Server.Transfer("~/Banned.aspx");
}
}
如何在登录后立即获得当前用户?
答案 0 :(得分:1)
在这里做:
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
或
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
答案 1 :(得分:1)
使用Login.Authenticate事件查明用户是否被禁止。
答案 2 :(得分:1)
正如Mantrork所说,你最好的选择是覆盖
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
此时,Membership.GetUser()将变为空白,但用户尚未完成身份验证。相反,您需要从登录控件中提取用户名;
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
bool Authenticated = false;
Authenticated = Membership.ValidateUser(Login1.UserName, Login1.Password) &&
if (Authenticated)
{
MembershipUser user = Membership.GetUser(Login1.UserName);
Guid i = (Guid)user.ProviderUserKey; //CurrentUser is null
if (UsefulStaticMethods.CheckIfUserISbanned(i))
{
Server.Transfer("~/Banned.aspx");
}
}
e.Authenticated = Authenticated;
}
(代码来自我的头脑,因此没有通过VS)
答案 3 :(得分:0)
如果用户在Web应用程序中进行了身份验证,则Login.Authenticate将返回true
答案 4 :(得分:0)
如果您的Login1是标准的asp:登录控件,您可以使用:
MembershipUser CurrentUser = Membership.GetUser(LoginUser.UserName);