版权声明:本文为博主原创文章。未经博主同意不得转载。

https://blog.csdn.net/u012025054/article/details/31773231

SharePoint 改动passwordWeb Part部署方案

1. 以管理员身份打开Visual Studio2010,新建项目,模板选择SharePoint2010,平台选择.NET Framework 3.5, 新建空白SharePoint项目。编辑名称changePWD及位置,点击确定。

2. 弹出SharePoint 自己定义向导。

填写预调试网站,点击验证。验证成功后,选择“部署为场解决方式”。点击确定。

3. 右键点击changePWD,加入----新建项,选择可视Web部件passwordChange。

4. 在解决方式资源管理器中,右键单击引用,加入引用。在.NET选项卡选择System.DirectoryServices.AccountManagement。
5. 编辑代码。
passwordChange.cs:
using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls; namespace changePWD.passwordChange
{
[ToolboxItemAttribute(false)]
public class passwordChange : WebPart
{
// 当更改可视 Web 部件项目项时,Visual Studio 可能会自己主动更新此路径。 private const string _ascxPath = @"~/_CONTROLTEMPLATES/changePWD/passwordChange/passwordChangeUserControl.ascx"; public string _domainName;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(true)]
[Category("自己定义设置")]
[WebDisplayName("请输入域server的计算机全名。 如smallville-pc")] public string DomainName
{
get { return _domainName ? ? (_domainName = "smallville-pc"); }//这里是域名
set { _domainName = value; }
}
protected override void CreateChildControls()
{
Control control = Page.LoadControl(_ascxPath);
Controls.Add(control);
}
}
}
passwordChangeUserControl.ascx :
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="passwordChangeUserControl.ascx.cs" Inherits="changePWD.passwordChange.passwordChangeUserControl" %>

更改password注意事项:

1.password必须包括下面三部分:字母,数字,特殊符号
2.password长度必须大于6位
3.新password不能与近期5次使用的password同样
4.一天之内仅仅同意改动一次password。
5.password改动后有5分钟的缓冲时间。5分钟后旧password作废。

6.发生更改password遗失,请联系系统管理员
7.联系邮箱ContactMe@126.com

username:  
     
输入旧password
输入新password  
再次输入新password
     

 

passwordChangeUserControl.ascx.cs :
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.Security;
using System.DirectoryServices.AccountManagement;
using Microsoft.SharePoint; namespace changePWD.passwordChange
{
public partial class passwordChangeUserControl : UserControl
{
#region 字符串
string domainName = string.Empty;
string logName = string.Empty;
string splited = string.Empty;
#endregion #region methods
protected void Page_Load(object sender, EventArgs e)
{
domainName = ((passwordChange)Parent).DomainName;
logName = SPContext.Current.Web.CurrentUser.LoginName; if (logName.IndexOf("\\") >= 0)
{ splited = logName.Split('\\')[1]; } SplitedLabel.Text = splited;
} #region 主要功能实现
protected void OKButton_Click(object sender, EventArgs e)
{
string oldpwd = OldCode.Text;
string newpwd = NewCode2.Text; OKButton.Page.Validate(); if (OKButton.Page.IsValid)
{ try
{
PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName, splited, oldpwd);
UserPrincipal currentPrincipal = UserPrincipal.FindByIdentity(context, splited); SPSecurity.RunWithElevatedPrivileges(delegate() //提升权限运行
{
currentPrincipal.ChangePassword(oldpwd, newpwd);
currentPrincipal.Save();
}); StaLabel.Text = "password改动成功";
}
catch (PasswordException pder)
{
StaLabel.Text = "PWD:[" + pder.Message + "]";
}
catch (Exception aner)
{
StaLabel.Text = "password改动错误:[" + aner.Message + "]";
}
}
else
{
StaLabel.Text = "按提示更改所填信息";
}
}
#endregion protected void ClearButton_Click(object sender, EventArgs e)
{
OldCode.Text = string.Empty;
NewCode1.Text = string.Empty;
NewCode2.Text = string.Empty; } #endregion
}
}

6. 点击生成菜单。选择部署解决方式.

7. 在页面上加入此Web部件。

SharePoint 改动passwordWeb Part部署方案的更多相关文章

  1. redis从入门到放弃 -> 部署方案

    单点部署方案 环境准备: [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@ ...

  2. eql高可用部署方案

    运行环境 服务器两台(后面的所有配置案例都是以10.96.0.64和10.96.0.66为例) 操作系统CentOS release 6.2 必须要有共同的局域网网段 两台服务器都要安装keepali ...

  3. virtual judge 本地部署方案

    这是一种将自己的电脑当作服务器来部署一个vj的方法,我也是参考前辈们的做法稍作了改动,如果在服务器上部署的话需要在细节上稍作改动: 一.什么是Virtual Judge? vj的工作原理什么?  vj ...

  4. Kubernetes常见的部署方案(十四)

    一.常见的部署方案 滚动更新 服务不会停止,但是整个pod会有新旧并存的情况. 重新创建 先停止旧的pod,然后再创建新的pod,这个过程服务是会间断的. 蓝绿 (无需停机,风险较小) 部署v1的应用 ...

  5. Neutron 物理部署方案 - 每天5分钟玩转 OpenStack(68)

    前面我们讨论了 Neutron 的架构,本节讨论 Neutron 的物理部署方案:不同节点部署不同的 Neutron 服务组件. 方案1:控制节点 + 计算节点 在这个部署方案中,OpenStack ...

  6. iOS应用动态部署方案

    iOS的动态部署能极大的节约成本.苹果的审核周期很长,有的时候,你可能不得不等待将近2个星期去上架你的新功能或者bug.所以动态部署是有价值的. 我这里讨论的情况不把纯web应用考虑在内,因为用户体验 ...

  7. ActiveMQ实现负载均衡+高可用部署方案

    一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现 2.activemq的特 ...

  8. spring boot 自动部署方案

    现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方案就是比较传统的自动部署方案. 1.为什么需要自动部署 基于微服务的架构,自动部署显得非常重要.因为每 ...

  9. Memcached常规应用与分布式部署方案

    1.Memcached常规应用 $mc = new Memcache(); $mc->conncet('127.0.0.1', 11211); $sql = sprintf("SELE ...

随机推荐

  1. C# 实现二叉树各种排序

    1. 引言 在实际的项目中,树还是用的比较多的一种,尤其是对于具有层次结构的数据.相信很多人都学过树的遍历,比如先序遍历,后序遍历等,利用递归还是很容易理解的. 今天给大家介绍下二叉树的几种遍历算法, ...

  2. jquery源码学习笔记(一)jQuery的无new构建

    本人是一名.net程序员..... 你一个.net coder 看什么jQuery 源码啊? 原因吗,很简单.技多不压身吗(麻蛋,前端工作好高...羡慕). 我一直都很喜欢JavaScript,废话不 ...

  3. [NodeJs] 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库

    小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...

  4. elixir 基础数据结构

     Elixir中的一些基础的数据结构:整数,浮点数,字符串,原子,列表,元组  整数,浮点数,字符串 跟其他语言差不多  原子:名字为值的常量  在ruby类似Symbols  在erlang是用大写 ...

  5. 分享一个oracle 完整备份的批处理文件

    该批处理是基本可以无限针对使用window 服务器的oracle 备份,如下: set mydate=%DATE:~0,10% exp e_cards2016/e_cards2016@orcl ful ...

  6. Pwn with File结构体(一)

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 利用 FILE 结构体进行攻击,在现在的 ctf 比赛中也经常出现 ...

  7. 如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用

    你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/151981 ...

  8. web项目启动时,自动执行代码的几种方式

    在项目开发过程中,往往需要一些功能随着项目启动而优先启动,下面我总结几种方式(非spring boot) spring boot的参考 spring boot 学习之路9 (项目启动后就执行特定方法) ...

  9. Django 自定义分页

    1.路由 urls.py url(r'^index2.html/', views.index2), 2.views.py def index2(request): # 数据总条数 当前页 每页显示条数 ...

  10. Python 执行主程序

    主程序里的代码包含的东西比较多, 如果在程序的.py文件里执行还要再调一遍方法, 但通常这个调用在测试完结后是要删掉的. 那么问题来了, 如果把这个代码直接发给别人, 执行时要再加上调用, 这个就很烦 ...