现在的位置: 首页 > 综合 > 正文

手把手教你制作一个修改域密码的Web页面

2013年10月03日 ⁄ 综合 ⁄ 共 1028字 ⁄ 字号 评论关闭
文章目录

    很多时候我们程序的会员管理功能都是基于Form验证的,但是有些功能强大的程序往往集成在域环境中。Dynamics CRM就是其中之一,那我们能不能像使用Form验证那样简单的通过某个Web页面来修改我们的域用户密码呢?微软早就给我们提供了解决方案了,通过调用.NET的域组件就能对域进行处理了。

为什么要在Web上修改域用户密码?

   虽然用户可以在自己的Windows系统上修改密码,但是提供Web的方式将会更灵活,它能让你随时随地的修改你的密码。

  

实现思路

   我们的Web页面需要收集用户的域账号,旧密码以及需要修改的新密码。在确保这些数据有效后,调用.Net组件对目标域发起修改密码的请求。这里唯一的难点是:怎么在域中找到用户的位置。我建议对整个域进行遍历来定位用户位置。虽然有失效率,但不容易出错。

 

操作界面

 

图1

 

图2

 

图3

 

图4

 

核心代码

        using System.DirectoryServices;
        
        DirectoryEntry de = new DirectoryEntry("LDAP://GhostHouse2011.GH");//域的根路径
        de.UsePropertyCache = true;



        DirectorySearcher searcher = new DirectorySearcher();
        searcher.SearchRoot = de;
        searcher.SearchScope = SearchScope.Subtree;
        searcher.Filter = string.Format("(&(objectClass=user)(samAccountName={0}))", txtUsername.Text.Trim());

        SearchResult result = searcher.FindOne();

        if (result == null)
        {
            lblResultMessage.Text = "该用户不存在,无法进行密码修改.";
        }

        try
        {
            result.GetDirectoryEntry().Invoke("ChangePassword", new object[] { txtOldPwd.Text.Trim(), txtNewPwd.Text.Trim() });
            lblResultMessage.Text = "密码修改成功";
        }
        catch (Exception ex)
        {
            lblResultMessage.Text = "密码修改失败,请检测旧密码是否正确";
            
        }

 

 

源码下载

 

 

抱歉!评论已关闭.