博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sharepoint2010修改域密码
阅读量:5216 次
发布时间:2019-06-14

本文共 5196 字,大约阅读时间需要 17 分钟。

具体代码:

 

 
///
 
<summary>
        
///
 update pwd
        
///
 
</summary>
        
///
 
<param name="sender"></param>
        
///
 
<param name="e"></param>
        
protected 
void btnUpdate_Click(
object sender, ImageClickEventArgs e)
        {
            
string strName = System.Web.HttpContext.Current.User.Identity.Name.ToString();
            strName = strName.Substring(strName.LastIndexOf(
"
\\
") + 
1);
            
string strNewPwd = tbNewPwd.Text;
            
string strConfirmPwd = tbConfirmPwd.Text;
            
if (strNewPwd != strConfirmPwd)
            {
                lblMsg.Text = 
"
新密码与确认密码不一致!
";
            }
            
else 
if (strNewPwd.Trim().Length < 
6)
            {
                lblMsg.Text = 
"
新密码长度至少为6个字符!
";
            } 
            
else 
            {
                
int iCount = 
10
                
if(Regex.IsMatch(strNewPwd, 
"
[0-9]
")) 
                {
                    iCount++;
                }
                
if(Regex.IsMatch(strNewPwd, 
"
[A-Z]
")) 
                {
                    iCount++;
                }
                
if(Regex.IsMatch(strNewPwd, 
"
[a-z]
")) 
                {
                    iCount++;
                }
                
if (Regex.IsMatch(strNewPwd, 
"
[^a-zA-Z0-9\u4E00-\u9FA5]
")) 
                {
                    iCount++;
                }
                
if (iCount >= 
3)
                {
                    lblMsg.Text = ChangeADUserPassword(
"
***.cn
", strName, tbOldPwd.Text, strNewPwd);
                }
                
else
                {
                    lblMsg.Text = 
"
新密码不符合密码策略,至少包含大写字母、小写字母、数字、特殊字符中3类!
";
                }
            } 
        }
        
///
 
<summary>
        
///
 change ad pwd
        
///
 
</summary>
        
///
 
<param name="DomainName"></param>
        
///
 
<param name="UserName"></param>
        
///
 
<param name="oldPass"></param>
        
///
 
<param name="newPass"></param>
        
///
 
<returns></returns>
        
public 
string ChangeADUserPassword(
string DomainName, 
string UserName, 
string oldPass, 
string newPass)
        
//
 用法:ChangeADUserPassword("AD", "VIRUS", "12345", "23456")
        {
            
try
            {
                
string strLDAP = 
"
LDAP://
" + DomainName;
                
string fullLoginName = DomainName + 
"
\\
" + UserName;
                
using (DirectoryEntry objDE = 
new DirectoryEntry(strLDAP, DomainName + 
"
\\
" + UserName, oldPass))
                {
                    DirectorySearcher deSearcher = 
new DirectorySearcher(objDE);
                    deSearcher.Filter = 
"
(&(objectClass=user)(sAMAccountName=
" + UserName + 
"
))
";
                    DirectoryEntry usr = deSearcher.FindOne().GetDirectoryEntry();
                    usr.Invoke(
"
ChangePassword
"
new Object[
2] { oldPass, newPass });
                    usr.CommitChanges();
                }
                
return (
"
更改域用户密码,操作成功!
");
            }
            
catch (Exception ex)
            {
                
return (
"
更改失败,错误信息:
" + ex.Message);
            }
        }

 

如果你要完成更酷的效果,参考如下: 

 来自博客园

 

在网上看了几篇有关SharePoint修改密码的文章,总觉得用户体验效果不好,就自己又写了一篇,三张效果图足以说明一切,咱们看效果图吧

图片已经欣赏过了,咱们来学习一下,如何在自己的项目上集成吧

第一步:创建一个空元素,并添加XML配制

之后打开创建的空元素,再里面添加如下XML

第二步:在V4母板页上添加如下JS代码,用来增加用户体验效果

function portal_openModalDialog() {    var options = SP.UI.$create_DialogOptions();    options.width = 500;    options.height = 250;    options.url = "/_layouts/SharePointProject/UpdatePassword.aspx";    options.dialogReturnValueCallback = Function.createDelegate(null, portal_modalDialogClosedCallback);    SP.UI.ModalDialog.showModalDialog(options);}//SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, 1); //关闭函数function portal_modalDialogClosedCallback(result, value) {    if (value == "1") {        SP.UI.Notify.addNotification("修改成功");     }    else if(value == "0"){        SP.UI.Notify.addNotification("修改失败,请重新修改");    }//    if (result === SP.UI.DialogResult.OK) {
// alert("点击了确定!");// }// if (result === SP.UI.DialogResult.cancel) {
// alert("点击了取消!");// }}function closeDialog() { SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel, 3);}

添加之后记得发布哦,否则会有意想不到的效果,自己尝试一下吧,我就不多说会有什么后果了

第三步:创建一个ASPX页面,代码如下

旧密码:
新密码:
确认密码:
修改密码

第四步:在后台cs文件里面写自己的业务处理

private string _userName;        private string _domainName;        private PrincipalContext _principalContext;        private UserPrincipal _userPrincipal;        protected void btnUpdate_Click(object sender, EventArgs e)        {            _userName = SPContext.Current.Web.CurrentUser.LoginName;            if (_userName.IndexOf("\\") > 0)            {                try                {                    _domainName = _userName.Split('\\')[0];                    _userName = _userName.Split('\\')[1];                    _principalContext = new PrincipalContext(ContextType.Domain, _domainName, _userName, txtOldPwd.Text);                    //这个方法也容易出问题,如果旧密码输入错误,这查找也会出错,                    _userPrincipal = UserPrincipal.FindByIdentity(_principalContext, _userName);                    if (_userPrincipal != null)                    {                        //这一点容易出错,是有关密码策略的问题                        //密码不满足密码策略的要求。检查最小密码长度、密码复杂性和密码历史的要求。 (异常来自 HRESULT:0x800708C5)                        //_userPrincipal.ChangePassword(txtOldPwd.Text, txtNewPwd.Text);                        //_userPrincipal.Save();                        Response.Write(                            "");                    }                }                catch (Exception ex)                {                        Response.Write(                            "");                }            }        }

 

上面的代码要引用 System.DirectoryServices.AccountManagement.dll 这个文件,经常会出错的信息就是 密码不满足密码策略的要求。检查最小密码长度、密码复杂性和密码历史的要求。 (异常来自 HRESULT:0x800708C5)  ,是因为域设置的策略问题,可以让管理员取消掉。

 

 

 

转载于:https://www.cnblogs.com/liaohenchen/archive/2012/07/12/sharepoint2010-update-AD-password.html

你可能感兴趣的文章
Xcode ipa打包时无法生成IOS APP ARCHIVE 而生成 Generic Xcode Archive
查看>>
JavaScript中的Map
查看>>
cat 生成文件 运行脚本
查看>>
didReceiveMemoryWarning-内存警告处理方法-iOS
查看>>
设计模式(一)
查看>>
神奇的口袋(dp)
查看>>
怎样使U盘可以COPY超过4G的文件
查看>>
重构第一天:封装集合
查看>>
Gitlab 维护措施
查看>>
Linux下介绍一款不错的HTML编辑器
查看>>
尚学堂--Java异常
查看>>
Django Rest Framework --序列化、请求数据校验
查看>>
Spring的常用工具类
查看>>
本地-云端的文件传输
查看>>
在Gridview编辑时添加DropDownList控件并设置默认值
查看>>
hdu 1596 find the safest road
查看>>
codeforces 598D Igor In the Museum
查看>>
核心②undefined 和 null
查看>>
Android--UI之ProgressBar
查看>>
DOS操作数据库基础
查看>>