您的位置:首页 > 其它

一个简单的sharepoint密码修改webpart

2015-06-29 01:14 381 查看
最近做了一个简单的sharepoint webpart开发,功能很简单,就实现FBA密码修改。sharepoint 是默认是没有密码修改功能的,可能是因为账号来源可以任意配置的原因。

如何创建webpart,请参照/article/4740385.html的博文。

下面是关键代码

1.引用

using Microsoft.SharePoint;
using System.Web.Security;
using System.Web;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Administration;


2.实现

protected void Button1_Click(object sender, EventArgs e)
{

ResetPassword();
}

private void ResetPassword()
{
SPWeb web = SPContext.Current.Web;

SPSecurity.RunWithElevatedPrivileges(delegate()
{
try
{

String ProviderName = GetMembershipProvider(Context);//取得认证提供者名称                     //web.CurrentUser.Name为当前用户名,textbox1为旧密码,Textbox3为新密码
bool re =  Membership.Providers[ProviderName].ChangePassword( web.CurrentUser.Name,TextBox1.Text.Trim(),TextBox3.Text.Trim());

if (re)
{
lable1.Text = "success";//更改成功
}
else
{
lable1.Text = "false";
}
}

catch (SPException spex)
{
lable1.Text = spex.Message;
}
catch (Exception ex)
{
lable1.Text = ex.Message;
}

});

}

public static string GetMembershipProvider(HttpContext context)
{
using (SPSite site = new SPSite(SPUtility.GetPageUrlPath(context)))
{
return GetMembershipProvider(site);
}
}

public static string GetMembershipProvider(SPSite site)
{
// get membership provider of whichever zone in the web app is fba enabled
SPIisSettings settings = GetFBAIisSettings(site);
if (settings == null) return null;
return settings.FormsClaimsAuthenticationProvider.MembershipProvider;
}
private static SPIisSettings GetFBAIisSettings(SPSite site)
{
SPIisSettings settings = null;

// try and get FBA IIS settings from current site zone
try
{
settings = site.WebApplication.IisSettings[site.Zone];
if (settings.UseFormsClaimsAuthenticationProvider)
return settings;
}
catch
{
// expecting errors here so do nothing
}

// check each zone type for an FBA enabled IIS site
foreach (SPUrlZone zone in Enum.GetValues(typeof(SPUrlZone)))
{
try
{
settings = site.WebApplication.IisSettings[(SPUrlZone)zone];
if (settings.UseFormsClaimsAuthenticationProvider)
return settings;
}
catch
{
// expecting errors here so do nothing
}
}

// return null if FBA not enabled
return null;
}


以上代码有参考:

https://sharepoint2010fba.codeplex.com/

https://fbachangepassword.codeplex.com/

总结:

其中最核心的是:Membership.Providers[ProviderName].ChangePassword( web.CurrentUser.Name,TextBox1.Text.Trim(),TextBox3.Text.Trim());

Membership.Providers[ProviderName] 还有ResetPassword函数,不过是自动随机密码,参考的例子就是用这个方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: