[sharepoint]根据用户名获取该用户的权限

写在前面

这样的一个场景,客户端请求sharepoint的rest api,但不允许传输用户的密码,使用的是证书认证的方式,但这样所有的用户用的是同一个证书,这样造成的结果就是无法识别该用户是否有操作,及查询的权限。这里是实际项目中遇到的一个问题。将解决方案,记录一下。

解决方案

 try
            {
                ClientContext spContext = new ClientContext("http://xxxx/xxx/xxx");
                spContext.ExecutingWebRequest += spContext_ExecutingWebRequest;
                var list = spContext.Web.Lists.GetByTitle("test");
                spContext.Load(list);
                spContext.ExecuteQuery();
                var permissions = list.GetUserEffectivePermissions(@"i:0#.w|domain\test15");
                spContext.ExecuteQuery();
                foreach (var permission in Enum.GetValues(typeof(PermissionKind)).Cast<PermissionKind>())
                {
                    var permissionName = Enum.GetName(typeof(PermissionKind), permission);
                    var hasPermission = permissions.Value.Has(permission);
                    Debug.WriteLine("Permission: {0}, HasPermission: {1}", permissionName, hasPermission);
                }
            }
            catch (Exception)
            {

                throw;
            }

在回调方法中,带上证书认证

 void spContext_ExecutingWebRequest(object sender, WebRequestEventArgs e)
        {
            HttpWebRequest webReq = e.WebRequestExecutor.WebRequest;
            var accessToken = TokenHelper.GetS2SAccessTokenWithWindowsIdentity(new Uri("http://xxx/xxx/xxxxx"), null);
            webReq.Method = "Post";
            webReq.Accept = "application/json;odata=verbose";
            webReq.Headers.Add("Authorization", "Bearer " + accessToken);
        }

然后根据返回的权限,参考
SPBasePermissions 枚举

根据该枚举提供的值,判断该用户是否拥有权限。

时间: 2024-10-05 17:15:27

[sharepoint]根据用户名获取该用户的权限的相关文章

假设已经存在函数 get_permissions可以获取当前用户的权限列表

题意:假设已经存在函数 get_permissions可以获取当前用户的权限列表, 设计一个权限管理类,既可以作为装饰器,对一个函数授权,也可以作为上下文管理,对一段代码授权例如 permissions = get_permissions() if 'admin' in permissions: ## do somthings else: raise Exception('Permissions denied') 分析:权限检查的一般都是用装饰器的方法实现demo: def get_permis

SharePoint 2013/2010 根据当前用户的某个属性过滤搜索结果

本文讲述如何在SharePoint 2013/2010 中根据当前用户的某个属性过滤搜索结果. 最近客户有一个需求,就是根据用户所在的国家(User Info List里面有Country字段),在搜索时只显示该用户所在国家的记录(对应的list 有Country 字段). 一般来说SharePoint 搜索是根据当前用户的权限来决定是否可以搜索到对应的记录,但是过是这样的话,需要将列表的所有记录都打破权限记录,这是非常损耗性能的,而且这样的权限结构维护起来很复杂. 本文将使用 ISecurit

SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)

(一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,SharePoint与此相关的对象包括用户和用户组.SharePoint支持多种身份认证方式,从最基本的Windows集成认证到各种表单认证,并且在SharePoint 2010中增加了基于声明(Claim Based)认证方式,以及一些相关服务,允许在同一个网站中使用多种认证方式.不过认证方式的设置不

C# 通过用户名和密码获取共享文件夹访问权限

局域网共享文件夹需要用户名和密码才能访问,通过程序怎样才能获得文件夹访问权限呢? 这里主要利用了DOS命令中的“NET USE”命令来实现. public static void GetAccessControl(string path,string user,string pwd) { Process p = new Process(); p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec"

Sharepoint 2013 user permissions(用户权限)

 Read: This permission level gives you read-only access to the website. Contribute:  In addition to all the permissions included in the Read permission level, the Contribute permission level allows you to create, edit, and delete items in existing li

SharePoint Online 开发篇:SharePoint Hosted Apps获取用户ID

Blog链接:https://blog.51cto.com/13969817 我们使用SharePoint Hosted App获取用户ID时,你将发现SharePoint中的JavaScript Object Model(JSOM)比REST API更容易使用. REST Protocol的第一个限制是它只返回100个条目,我还没有找到一个方法来增加这个,而使用JSOM可以获取所有用户的列表,并按照ID 排序. 比如我们需要list来保存User ID,然后分别使用REST API和JSOM获

在realm中动态查询用户的权限&amp;角色

@Controller @Scope("prototype") @Namespace("/") @ParentPackage("struts-default") @Results({ @Result(name = "login", location = "/login.jsp"), @Result(name = "index", type = "redirect",

【linux相识相知】用户及权限管理

linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管理员我对linux系统权限有哪些?作为一个普通的用户又可以对linux系统有哪些操作呢?这里就牵扯到了linux的用户类别和权限管理.本次博客就用户和权限管理作出详细的解释. 用户和组类型 在linux系统中,有着用户和组着两个概念,用户是被包含在组里面的. 用户可以分为以下2中类别: 管理员:也就

博客5:文件,目录以及用户的权限管理

linux用户与组的相关内容简介:   1.Linux用户:Username/UID           管理员:root,0           普通用户:1-65535                   系统用户:1-499(在centos7上为1-999)                        作用:对守护进程获取资源进行权限分配                    登录用户:500+(1000+)                         交互式登录   2.Linux