登录控件事件出现问题
本文关键字:问题 事件 控件 登录 | 更新日期: 2023-09-27 18:01:57
我想在用户登录时检查一下他是否被禁止了。但我有以下问题:
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");
}
}
如何在当前用户登录后立即获得当前用户?
从这里开始:
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
或
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
使用Login。验证事件以确定用户是否被禁止。
正如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运行)
登录。如果用户在web应用程序中被认证,Authenticate返回true
如果你的Login1是一个标准的asp:Login控件,你可以使用:
MembershipUser CurrentUser = Membership.GetUser(LoginUser.UserName);