使用login控件 进行域名登陆
login控件提供了很完善的事件处理,在很多项目使用中,域用户登陆是很必要的.这边对项目中使用的写个笔记:
前台添加login控件:
<asp:Login ID="lgnLogin" runat="server" Width="250px" OnLoggedIn="OnLoggedIn" OnLoginError="OnLoginError"
OnLoggingIn="OnLoggingIn" OnAuthenticate="lgnLogin_Authenticate">
这边对login控件的事件响应顺序列一下:1.onloggingIn: 处理一些前驱的事情,比如清楚session,历史纪录等等.
2.OnAuthenticate: 是对登陆用户进行验证(取域名并执行判断是否正确.)
3.如果验证通过,则是OnLoggedIn事件,处理登陆成功后的事件,如将此用户加入角色,页面跳转等.
如果验证不通过,则是OnLoggedError事件,对登陆失败进行处理,如显示错误信息,跳转到错误页面等.
后台代码:
public void OnLoggingIn(object sender, LoginCancelEventArgs e)
{
Session.Clear();
}
protected void lgnLogin_Authenticate(object sender, AuthenticateEventArgs e)
{
string domain = ConfigurationManager.AppSettings["domainName"].Trim(); //将域名加入到config配置中
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domain); //获得所在的域
bool ADUserValid = ctx.ValidateCredentials(lgnLogin.UserName.Trim(), lgnLogin.Password.Trim()); //判断域用户是否通过
e.Authenticated = ADUserValid;
}
public void OnLoggedIn(object sender, EventArgs e)
{
Showmessage("Login successful!"); //此方法省略,须添加
Response.Redirect("Defalut.aspx");
}
public void OnLoggedIn(object sender, EventArgs e)
{
Showmessage("Login failed, please check you domain user!");
}

浙公网安备 33010602011771号