通过代码解决SharePoint列表视图权限分配问题
最近被SharePoint列表视图分权限的问题困扰着,在网上搜到些解决方案,比较不错的是Bewise.SharePoint.SPViewPermissionSetting的解决方案,但是在修改视图权限配置的时候经常出问题,不知道是什么原因,后来从codeplex上找到了这个解决方案的源码,下来学习一下,总结如下:
它是通过自定义WebControl来修改ListViewWebPart的ViewSelector模板实现视图权限过滤的。
开工:
第一步、
先建个ListViewPermissionConfig列表,用来存放视图权限的配置信息。
列表栏:ListName(单行文本)、ViewName(单行文本)、ViewGuid(单行文本)、Permission(人员或用户组,允许多选)。
第二步、
开写代码,示意代码如下:
2using System.Collections.Generic;
3using System.Text;
4using System.Web.UI;
5
6using Microsoft.SharePoint;
7using Microsoft.SharePoint.WebControls;
8
9namespace ITS.SharePoint.WebControls
10{
11 public class CustomerViewMenu : ViewSelectorMenu
12 {
13 /**//// <summary>
14 /// 用户是否可以查看此时图
15 /// </summary>
16 /// <param name="viewID"></param>
17 /// <param name="userOrGroup"></param>
18 /// <returns></returns>
19 private bool CanSeeView(Guid viewID, SPUser currentUser)
20 {
21 bool b = false;
22 using (SPSite site = new SPSite("http://liust-server:100"))
23 {
24 using (SPWeb icmWeb = site.AllWebs["ITSImportanceCustomerManagement"])
25 {
26 SPList listViewConfig = icmWeb.Lists["ListViewPermissionConfig"];
27 string strQuery = string.Format("<Where><Eq><FieldRef Name='ViewGuid' /><Value Type='Text'>{0}</Value></Eq></Where>", viewID.ToString());
28 SPQuery query = new SPQuery();
29 query.Query = strQuery;
30
31 SPListItemCollection items = listViewConfig.GetItems(query);
32 if (items.Count > 0)
33 {
34 foreach (SPListItem item in items)
35 {
36 object obj = item["Permission"];
37 SPFieldUserValueCollection userValues = (SPFieldUserValueCollection)obj;
38 foreach (SPFieldUserValue value in userValues)
39 {
40 //如果value.User非空,则代表当前值是用户,相反则是用户组。
41 if (value.User != null)
42 {
43 if (currentUser.LoginName.Equals(value.User.LoginName))
44 return true;
45 }
46 else
47 {
48 //判断当前用户是否在用户组中
49 SPGroup group = icmWeb.Groups.GetByID(value.LookupId);
50 foreach(SPUser user in group.Users)
51 {
52 if (currentUser.LoginName.Equals(user.LoginName))
53 return true;
54 }
55 }
56 }
57 }
58 }
59 }
60 }
61 return false;
62 }
63
64 protected override void Render(HtmlTextWriter output)
65 {
66 if (this.Visible && !SPContext.Current.Web.CurrentUser.IsSiteAdmin)
67 {
68 foreach (Control item in base.MenuTemplateControl.Controls)
69 {
70 try
71 {
72 if ((item is MenuItemTemplate) && (SPContext.Current.List.Views[((MenuItemTemplate)item).Text]) != null)
73 {
74 SPView tempView = SPContext.Current.List.Views[((MenuItemTemplate)item).Text];
75 if (tempView.DefaultView)
76 item.Visible = true;
77 else
78 item.Visible = this.CanSeeView(tempView.ID, SPContext.Current.Web.CurrentUser);
79 }
80 }
81 catch (Exception) { }
82 }
83 base.Render(output);
84 }
85 else
86 {
87 base.Render(output);
88 }
89 }
90 }
91}
92
编译完成后部署到GAC中。
第三部、
修改DefaultTemplate.ascx文件,在文件头部加入以下代码:
接着搜索"SharePoint:ViewSelectorMenu",替换成"<ItsControls:CustomerViewMenu",最终改完效果如下:
重启IIS后,进入网站,在ListViewPermissionConfig列表中配置一条视图权限信息。
说明:ViewGuid和Permission两项必须填写,列表默认视图无论是否配置权限都会显示。
最终配置完的效果如下图:
转载于:https://www.cnblogs.com/Nirvanalst/archive/2009/07/07/1518023.html
通过代码解决SharePoint列表视图权限分配问题相关推荐
- (59) 解决在列表视图复制导致打开详细内容
现象: 在列表视图中,当你要复制一个内容,就触发click事件,就打开form视图了 为了区分click mousedown mousemove muuseup 事件,从而放弃click事件 用后面那 ...
- 问题总结(一)使用代码调整SharePoint WebPart 视图和列表菜单
最近在做项目的过程中,遇到个问题,创建一个SharePoint站点,在站点首页(default.aspx)添加了几个列表WebPart(ListViewWebPart),WebPart选用了自定义的视 ...
- 关于SharePoint中管理列表项权限
现况概述在SharePoint中对于列表的权限默认是只可以控制到列表级别,而对于列表下面的列表项,在SharePoint中是无法进行控制的. 需求概述现在我参与的项目中需要控制一个文档库中的文档.让这 ...
- 在定义SharePoint列表的SPD数据视图的时候需要注意的问题
为了开发的效率我们通常对SharePoint列表的新建.编辑等自带的ASPX表单进行自定义,但在实际的过程中,老是会出现莫名其妙的错误,从而造成开发有可能无限拖延. 首先,作为开发者,我们要清楚微软一 ...
- oracle添加创建视图权限不足,Oracle Scott创建视图权限不足解决办法
Oracle Scott创建视图权限不足解决办法 在PL/SQL Developer数据库管理工具中,使用SCOTT用户帐号进行登录,新建SQL查询窗口,输入一条创建视图的SQL语句,随后弹出一个错误 ...
- oracle权限不足的报错,Oracle Scott创建视图权限不足解决办法
大家安装了oracle数据库,按照oracle教程所说,使用scott用户登录,创建一个视图,有没有遇到错误提示:权限不足!,今天就告诉大家如何解决! 在PL/SQL Developer数据库管理工具 ...
- 给oracle scott权限,Oracle Scott创建视图权限不足解决办法
在PL/SQL Developer数据库管理工具中,使用SCOTT用户帐号进行登录,新建SQL查询窗口,输入一条创建视图的SQL语句,随后弹出一个错误的提示信息:ORA-01031:权限不足. 上图所 ...
- 解决Oracle创建视图,权限不足的问题
在scott用户创建视图的时候,出现错误 ORA-01031: 权限不足 具体解决方法如下: 1.使用dba用户登录 2.给scott用户创建视图的权限. --创建视图权限 grant create ...
- 使用代码设置Item级的权限(权限总结1)
itle in english:set Item Level Permission for SharePoint (MOSS/WSS) List/Document Library Programma ...
最新文章
- linux+用户的shell,Linux用户管理(十)Linux Shell高级
- 大数据在彩票预测和解决社会问题的用处
- [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
- CVPR 2019 | 西北工业大学开源拥挤人群数据集生成工具,大幅提升算法精度
- Flutter MaterialButton组件详细概述
- 容器服kubernetes_Kubernetes,标准化和安全性主导2017年Linux容器新闻
- 手把手教你在Windows环境下升级R
- C++ GUID和string转化函数【转载】
- 离散数学 习题篇 —— 关系的性质
- matlab的小波分析,MATLAB小波分析学习.pdf
- My Firest FireMonkey App
- “荣耀10X”更名背后的现实逻辑与未来风暴
- 微信公众号开发(4)-实现PC扫码登录
- 计算机组成原理实验 内容,计算机组成原理实验报告
- Nice 片 之 兄 dei 一起来看看 MMKV 。。。
- 金纳米粒子修饰MIL-101骨架材料(AuNPs/MIL-101)/负载COF-TpPa-1(Au NPs/COF-TpPa-1)|齐岳试剂
- 浙大数据结构:08-图7 公路村村通 (30 分)Prim与Kruskal算法
- C# 淘宝商品微信返利助手开发-(五)返利助手开发(3)淘口令如何通过API转换为链接
- FPGA基础知识18(在Quartus II下产生无源代码网表设计文件方法 QXP VQM 加密文件)
- 调用第三方接口开据发票
热门文章
- 计算机中丢失msc,mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll
- HTML+CSS+JS实现 ❤️透明的水滴文字背景特效❤️
- MySQL表级完整性约束
- 如何设置MySQL的环境变量
- java计算棋盘上的麦粒
- java velocity 邮件_邮件集成java mail + 读取邮件模板
- matlab 动态目录调用程序集,C#中如何动态添加程序集查找目录
- Mysql 零距离-入门(三)数据类型
- Spring Boot Cache之缓存
- 线性规划 —— matlab