通过代码实现web方式重置域密码及同步Domino密码

简介:

前面我们介绍了,如果介绍了,通过代码实现域密码修改流程,今天我们主要介绍如何实现web方式重置域密码,该功能主要面向管理员;同时挂载邮箱密码重置功能链接,实现,通过web方式重置域密码后,Domino邮箱密码也随之重置达到统一的效果;

主要做法就是在域密码修改及遗忘流程功能下修改代码实现重置密码效果:

添加图示并且添加重置密码代码:

可以复制其他试图及修改代码即可;

clip_image002

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
@{
ViewBag.Title =  "Resetpwd" ;
Layout =  "~/Views/Shared/_LayoutView.cshtml" ;
}
@section head{
<script src= "@System.Security.Policy.Url.Content(" ~/Scripts/home.js ")"  type= "text/javascript" ></script>
}
< div  id= "contactArea" >
</ div >
< div  class = "pcontent" >
< div  class = "pstep02" >
<b>重置密码</b>
</ div >
< div  class = "pstep03" >
Change your password
</ div >
< div  class = "pstep04" >
A strong password helps prevent
</ div >
<ul  class = "ulstep" >
<li><b>Iiosoft Account</b> <a style= "cursor: pointer;"  id= "Search" >What's  this ?</li>
<li>
<input name= ""  id= "itcode"  type= "text"  class = "a01input"  />
</li>
<li  class = "liTOP" ><b>New password </b></li>
<li>
<input name= ""  id= "newpwd"  type= "password"  class = "a01input"  />
</li>
<li style= "color: #999;" >8-character minimum;  case  sensitive </li>
<li  class = "liTOP" ><b>Reenter password </b></li>
<li>
<input name= ""  id= "rtpwd"  type= "password"  class = "a01input"  />
</li>
</ul>
< div  class = "topw" >
<input type= "button"  id= "UserSetpwd"  value= "Save"  class = "btnSave"  />&nbsp;&nbsp;&nbsp;&nbsp;<input type= "button"  id= "UserpwdCancel"  value= "Cancel"  class = "btnCancel"  />
</ div >
< div  id= "Loading3"  style= "display: none" >
<img src= "../img/grid-loading.gif"  /><span id= "sProcess3" >更新密码中,请稍后...</span>
</ div >
</ div >
然后修改homecontroller.cs
添加一下代码:
public  void  ChangePwd()
{
string sItCode = Request[ "sItCode" ];
string sOldPwd = Request[ "sOldPwd" ];
string sNewPwd = Request[ "sNewPwd" ];
ADOperator ao =  new  ADOperator();
int  y = ao.IsUserExistsByAccount(sItCode);
string Rs =  "" ;
if  (y == 1)
{
int  x = ao.Login(sItCode, sOldPwd);
if  (x == 1)
{
int  z = ao.ChangeUserPassword(sItCode, sOldPwd, sNewPwd);
if  (z == 1)
{
Rs =  "CS" ;
//调用Domino密码修改
changeDominoPwd(sItCode, sNewPwd);
}
else
{
Rs =  "TR" ;
}
}
else
{
Rs =  "EP" ;
}
}
else
{
Rs =  "NU" ;
}
ao.dispose();
Response.Write(Rs.ToString());
}
//重置密码
//[HttpGet]
public  void  SetPassword()
{
string Rs =  "CS" ;
string sItCode = Request[ "sItCode" ];
string sOldPwd = Request[ "sOldPwd" ];
string sNewPwd = Request[ "sNewPwd" ];
ADOperator ao =  new  ADOperator();
int  y = ao.IsUserExistsByAccount(sItCode);
if  (y == 1)
{
ADOperator.SetPasswordByAccount(sItCode, sNewPwd);
changeDominoPwd(sItCode, sNewPwd);
Response.Write(Rs.ToString());
}
}
#region Domino密码同步修改
public  static  void  changeDominoPwd(String sNewUserName, String sNewPwd)
{
String serverName =  "iio-mail01" ;
String cookie =  "%temp%/cookie.txt" ;
String system_username =  "changepwd" ;
String system_passwd =  "password8" ;
String str_login =  "cmd.exe /c curl -c "  + cookie +  " -d \"%25%25ModDate=0FF5136000000000&Username="  + system_username +  "&Password="  + system_passwd +  "&RedirectTo=%2FChgUpwd.nsf%2Finternetpwd%3FOpenForm\" \"http://" +serverName+ "/names.nsf?Login\" " ;
String str_changepwd =  "cmd.exe /c curl -b "  + cookie +  " -d \"__Click=0&Form=internetpwd&Time=2013-12-18+19%3A47%3A48&CurLoginUser=CN%3D"  + system_username +  "%2FO%3Diiosoft&UserName="  + sNewUserName +  "&UserPassword="  + sNewPwd +  "\" \"http://" +serverName+ "/ChgUpwd.nsf/internetpwd?OpenForm&Seq=1\"" ;
Win32_Process win32 =  new  Win32_Process();
win32.CreateProcess(str_login);
win32.CreateProcess(str_changepwd);
}
#endregion
}
}

clip_image004

重置域密码后,需要重置Domino密码:所以需要添加关联domino下web方式重置密码的URL

clip_image006

web下方式重置domino密码

clip_image008

然后,重新生成解决方案及发布:

clip_image010

发布后,可通过iis访问浏览

clip_image012

clip_image014

clip_image016

通过添加网站方式,选择发布后的路径文件

clip_image018

添加后,修改应用程序池的版本;默认是net2.0,需要修改net4.0

clip_image020

浏览访问

clip_image022

clip_image024

接下来测试一下

重置user1的密码为123123

clip_image026

通过user01及重置后的密码尝试验证登陆

clip_image028

clip_image030

接下来测试domino密码是否也被重置:

clip_image032



本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1346887,如需转载请自行联系原作者

相关文章
|
18天前
|
计算机视觉 Python
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
这篇文章是关于如何使用Flask框架结合OpenCV库,通过电脑摄像头实现视频流在网页上的实时显示,并提供了单摄像头和多摄像头的实现方法。
59 2
Flask学习笔记(六):基于Flask的摄像头-web显示代码(可直接使用)
|
2月前
|
XML JSON 安全
Web安全-代码注入
Web安全-代码注入
21 6
|
3月前
|
中间件 API 开发者
Bottle框架探秘:如何用几行代码搅动Web开发江湖?
【8月更文挑战第31天】Bottle是一个仅依赖Python标准库的轻量级Web开发微框架,无需额外依赖,简化部署与维护。它以简洁高效著称,适合快速构建Web应用。通过简单的示例即可上手,如用几行代码实现“Hello World”应用。除基础功能外,Bottle还支持模板渲染、会话管理和表单处理等,适用于学习及小型项目,也能在高性能要求的应用中展现价值。无论是新手还是有经验的开发者,Bottle都是高效Web开发的理想选择。
39 1
|
3月前
|
前端开发 JavaScript
Web 前端大揭秘!JS 数据类型检测竟如此震撼,一场惊心动魄的代码探秘之旅等你来!
【8月更文挑战第23天】在Web前端开发中,合理检测数据类型至关重要。JavaScript作为动态类型语言,变量类型可在运行时变化,因此掌握检测技巧十分必要。
33 1
|
3月前
|
前端开发 IDE Java
"揭秘前端转Java的秘径:SpringBoot Web极速入门,掌握分层解耦艺术,让你的后端代码飞起来,你敢来挑战吗?"
【8月更文挑战第19天】面向前端开发者介绍Spring Boot后端开发,通过简化Spring应用搭建,快速实现Web应用。本文以创建“Hello World”应用为例,展示项目基本结构与运行方式。进而深入探讨三层架构(Controller、Service、DAO)下的分层解耦概念,通过员工信息管理示例,演示各层如何协作及依赖注入的使用,以此提升代码灵活性与可维护性。
50 2
|
3月前
|
数据库 开发者 Java
数据战争:Hibernate的乐观与悲观锁之争,谁将主宰并发控制的王座?
【8月更文挑战第31天】在软件开发中,数据一致性至关重要,尤其是在多用户并发访问环境下。Hibernate 作为 Java 社区常用的 ORM 框架,提供了乐观锁和悲观锁机制来处理并发问题。乐观锁假设数据不易冲突,通过版本号字段 (`@Version`) 实现;悲观锁则假定数据易冲突,在读取时即加锁。选择哪种锁取决于具体场景:乐观锁适合读多写少的情况,减少锁开销;悲观锁适合写操作频繁的场景,避免数据冲突。正确应用这些机制可提升应用程序的健壮性和效率。
34 0
|
3月前
|
Java UED 自然语言处理
Struts 2 国际化竟有如此神奇魔力?快来揭开多语言支持的 Web 应用神秘面纱
【8月更文挑战第31天】在全球化背景下,Web应用需适应多种语言环境。Struts 2凭借其强大的国际化(i18n)支持,简化了多语言应用开发。通过不同语言的资源文件,它能自动匹配用户语言偏好,优化用户体验并扩展用户群。下面是一个示例:创建`messages.properties`(英语)与`messages_zh_CN.properties`(中文),并在Struts 2的Action类及JSP页面中调用`getText()`方法及Struts标签展示相应语言内容。此外,在struts.xml中指定资源文件,以确保框架正确加载对应语言包。通过这些步骤,开发者可以轻松实现应用的多语言支持。
61 0
|
3月前
|
Java 开发者 JavaScript
Struts 2 开发者的秘籍:隐藏的表单标签库功能,能否成为你下个项目的大杀器?
【8月更文挑战第31天】Struts 2表单标签库是提升Web页面交互体验的神器。它提供丰富的标签,如`&lt;s:textfield&gt;`和`&lt;s:select&gt;`,简化表单元素创建与管理,支持数据验证和动态选项展示。结合示例代码,如创建文本输入框并与Action类属性绑定,显著提升开发效率和用户体验。通过自定义按钮样式等功能,Struts 2表单标签库让开发者更专注于业务逻辑实现。
46 0
|
3月前
|
iOS开发 Android开发 MacOS
从零到全能开发者:解锁Uno Platform,一键跨越多平台应用开发的神奇之旅,让你的代码飞遍Windows、iOS、Android、macOS及Web,技术小白也能秒变跨平台大神!
【8月更文挑战第31天】从零开始,踏上使用Uno Platform开发跨平台应用的旅程。只需编写一次代码,即可轻松部署到Windows、iOS、macOS、Android及Web(通过WASM)等多个平台。Uno Platform为.NET生态带来前所未有的灵活性和效率,简化跨平台开发。首先确保安装了Visual Studio或VS Code及.NET SDK,然后选择合适的项目模板创建新项目。项目结构类似传统.NET MAUI或WPF项目,包含核心NuGet包。通过简单的按钮示例,你可以快速上手并构建应用。Uno Platform让你的技术探索之旅充满无限可能。
56 0
|
3月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
94 0