使用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!");

 

        }

     

posted @ 2013-03-11 14:42  天涯海角路  阅读(558)  评论(0)    收藏  举报