zoukankan      html  css  js  c++  java
  • Sharepoint身份模拟

    用代码操作Sharepoint时,会出现需要那些不具有相应权限的用户对列表、库等进行操作,一般利用

    SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using(SPSite site = new SPSite(siteurl))
    { site.AllowUnsafeUpdates
    = true; SPListItem item = site.AllWebs[""].Lists[""].Folders.Add("父文档库url", SPFileSystemObjectType.Folder); item["Name"] = “文件夹名称”; item.Update(); site.AllowUnsafeUpdates = false;
    } });

    但有时会遇到The security validation for this page is invalid”的错误
    遇到这样的错误,可能是因为Sharepoint对请求的资源进行验证,从而导致的error,比如创建列表等

    Microsoft.SharePoint.Administration.SPWebApplication webApp = site.Site.WebApplication;
    webApp.FormDigestSettings.Enabled = false;
    SPFile spFile = site.Files.Add(fileUpload.FileName, contents);
    spFile.Item.Update();
    webApp.FormDigestSettings.Enabled = true;
    

    通过上述代码来解决invalid错误。

     

    接上部分内容

    在实践中发现有时上面的代码不能成功运行,还是会报错。原因是不能再SPSecurity.RunWithElevatedPrivileges中对列表或者项更新,权限提升在实例化web的过程中,所以将代码修改为:

    SPWeb web=null;
    SPSecurity.RunWithElevatedPrivileges(delegate() { using(SPSite site = new SPSite(siteurl)) { web=site.AllWebs[""]; } });
                web.AllowUnsafeUpdates = true;
                SPListItem item = site.AllWebs[""].Lists[""].Folders.Add("父文档库url", SPFileSystemObjectType.Folder);
                item["Name"] = “文件夹名称”;
                item.Update();
                web.AllowUnsafeUpdates = false;
     

    这样代码就不会有问题了

  • 相关阅读:
    偶遇this之坑
    程序员的职业素养——读后感
    我怎么没想到——读后感
    黑客与画家——读后感
    漫谈认证与授权
    动手造轮子:实现一个简单的依赖注入(二) --- 服务注册优化
    动手造轮子:实现简单的 EventQueue
    asp.net core 自定义 Policy 替换 AllowAnonymous 的行为
    SQL Server 中 `JSON_MODIFY` 的使用
    WeihanLi.Npoi 近期更新
  • 原文地址:https://www.cnblogs.com/renzh/p/2694857.html
Copyright © 2011-2022 走看看