A-A+

.NET与AD-验证用户名和密码

2014年09月22日 技术 暂无评论 阅读 2,363 次

索引请点击这里

.NET与AD相结合,比较常用的有一种情况——用户登录验证。本章节就是用来说明一下验证输入凭证正确与否的方法。网络上流传较广的是如下方法:

  1. DirectoryEntry entry = null;
  2. try
  3. {
  4.     entry = new DirectoryEntry(strLDAP, strUserName, strOldPwd, AuthenticationTypes.Secure);
  5.     object objID = entry.NativeGuid;
  6. }
  7. catch
  8. {
  9.     this.lbError.Text = "输入的用户名或密码不正确";
  10.     return;
  11. }

在一般情况下,这种登录验证方法是没有问题的,但是在用户密码过期的情况下,这种验证就会无法通过,会返回信息:“未知错误”或“无法操作服务器”。而有时候,我们会希望即使在密码过期的情况下,输入用户名和过期密码,验证也要通过,这时候就需要使用另外一种方法:

  1. PrincipalContext context = new PrincipalContext(ContextType.Domain, strLDAP, strAdminUserName, strAdminPwd);
  2. bool blIsValid = context.ValidateCredentials(strUserName, strOldPwd);
  3. if (!blIsValid)
  4. {
  5.     this.lbError.Text = "输入的用户名或密码不正确,修改失败";
  6.     return;
  7. }
  8. else
  9. {
  10.     //凭证正确时的操作
  11. }

PrincipalContext类属于命名空间System.DirectoryServices.AccountManagement,在使用此类之前,需要在项目中添加引用,如下图:

添加引用

给我留言

Copyright © 字痕随行 保留所有权利.   Theme  Ality 京ICP备14039894号

用户登录

分享到: