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

WSS3 Elevation of Privilege 替代 用户身份模拟Impersonate 进行权限提升

2012年03月08日 ⁄ 综合 ⁄ 共 1113字 ⁄ 字号 评论关闭
正文:
WSS3 中的 Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges 替代 Impersonate 进行权限提升.
好处就是根本不需要在配置文件写些什么用户名密码, 省了麻烦, 加了一定密码泄漏安全, 但是也增加了不安全代码的后门.
RunWithElevatedPrivileges 使用的是你IIS Application的进程池帐户,所以注意安全,嘿嘿.
 
SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // 用系统帐户做操作
});
SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(SPContext.Current.Site.ID))
    {//注意要new一个, 用SPContext.Current.Site的话,那就是当前帐户的安全级别
       //用系统帐户操作这个site
    }
});
 
照抄MSDN的代码例子:
SPWeb web = SPContext.Current.Web;
SPUser user = web.CurrentUser; // the calling user

   // Uses the SHAREPOINT\system creds with the SPUser's identity reference of user
SPSecurity.RunWithElevatedPrivileges(delegate() {
  // Gets a new security context using SHAREPOINT\system
  using (SPSite site = new SPSite(this.Page.Request.Url.ToString())) {
    using (SPWeb thisWeb = site.OpenWeb()) {
      thisWeb.AllowUnsafeUpdates = true;
      SPList theList = thisWeb.Lists[listName];
      SPListItem record = theList.Items.Add();
      record["User"] = user; // calling user
      record.Update(); // uses SHAREPOINT\system
    }
  }
});
类别: SharePoint
发布日期: 2007-6-14 20:43

抱歉!评论已关闭.