sharepoint视图权限控制器二次开发
2016-02-06 12:44
375 查看
<pre name="code" class="html">
将近年关,不高兴做事情,所以研究了一会SharePoint的视图权限控制,之前网上下了一个MOSS2007的视图权限wsp包,因为自己使用的环境主要是sharepoint 2013,所以界面上很不友好,决定自己写一个视图权限的东西。在这里顺手记录下了开发过程中的一些心得和体会,如有不对的地方,还请各位大神多多提点。我这个想法主要基于SharePoint下Web Part的开发。在每个视图页面添加一个权限过滤webpart,然后根据本站点的list来判断权限是否正确。
先通过VS新建了一个sharepoint visual webpart 2013,然后在usercontroller代码中贴入
记得要引用
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Utilities;然后在Webpart 代码中贴入
protected override void CreateChildControls()
{
VisualWebPart1UserControl control = Page.LoadControl(_ascxPath) as VisualWebPart1UserControl;
//添加自定义属性
if (control != null)
{
control.WebPart = this;
}
Controls.Add(control);
}
private string listN = "test";
private string viewN = "test";
[Personalizable(), WebBrowsable]
public string listname
{
get
{
return listN;
}
set
{
listN = value;
}
}
[Personalizable(), WebBrowsable]
public string viewname
{
get
{
return viewN;
}
set
{
viewN = value;
}
}
其实并不困难。期间需要注意的应该是权限表的Permission字段应该允许多选。
将近年关,不高兴做事情,所以研究了一会SharePoint的视图权限控制,之前网上下了一个MOSS2007的视图权限wsp包,因为自己使用的环境主要是sharepoint 2013,所以界面上很不友好,决定自己写一个视图权限的东西。在这里顺手记录下了开发过程中的一些心得和体会,如有不对的地方,还请各位大神多多提点。我这个想法主要基于SharePoint下Web Part的开发。在每个视图页面添加一个权限过滤webpart,然后根据本站点的list来判断权限是否正确。
先通过VS新建了一个sharepoint visual webpart 2013,然后在usercontroller代码中贴入
public VisualWebPart1 WebPart { get; set; } protected void Page_Load(object sender, EventArgs e) { if (CanSeeView(WebPart.listname, WebPart.viewname, SPContext.Current.Site.OpenWeb().CurrentUser) == false) { SPUtility.TransferToErrorPage("您没有权限访问此视图."); } } //// <summary> /// 用户是否可以查看此时图 /// </summary> /// <param name="viewID"></param> /// <param name="userOrGroup"></param> /// <returns></returns> private bool CanSeeView(string list, string view, SPUser currentUser) { try { if (view == "test") { return true; } SPWeb web = SPContext.Current.Web; SPList listViewConfig = web.Lists["ListViewPermissionConfig"]; string strQuery = string.Format("<Where><And><Eq><FieldRef Name='ListName' /><Value Type='Text'>{0}</Value></Eq><Eq><FieldRef Name='ViewName' /><Value Type='Text'>{1}</Value></Eq></And></Where>", list.ToString(),view.ToString()); SPQuery query = new SPQuery(); query.Query = strQuery; SPListItemCollection items = listViewConfig.GetItems(query); if (items.Count > 0) { foreach (SPListItem item in items) { //SPFieldUserValue[] userValues = item["Permission"] as SPFieldUserValue[]; object obj = item["Permission"]; SPFieldUserValueCollection userValues = (SPFieldUserValueCollection)obj; foreach (SPFieldUserValue value in userValues) { //如果value.User非空,则代表当前值是用户,相反则是用组。 if (value.User != null) { if (currentUser.LoginName.Equals(value.User.LoginName)) return true; } else { //判断当前用户是否在用户组中 SPGroup group = web.Groups.GetByID(value.LookupId); foreach (SPUser user in group.Users) { if (currentUser.LoginName.Equals(user.LoginName)) return true; } } } } } return false; } catch (Exception e){ return false; }
记得要引用
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.Utilities;然后在Webpart 代码中贴入
protected override void CreateChildControls()
{
VisualWebPart1UserControl control = Page.LoadControl(_ascxPath) as VisualWebPart1UserControl;
//添加自定义属性
if (control != null)
{
control.WebPart = this;
}
Controls.Add(control);
}
private string listN = "test";
private string viewN = "test";
[Personalizable(), WebBrowsable]
public string listname
{
get
{
return listN;
}
set
{
listN = value;
}
}
[Personalizable(), WebBrowsable]
public string viewname
{
get
{
return viewN;
}
set
{
viewN = value;
}
}
其实并不困难。期间需要注意的应该是权限表的Permission字段应该允许多选。
相关文章推荐
- SharePoint 客户端对象模型 (一) ECMA Script
- 在Javascript里访问SharePoint列表数据的实现方法
- 3ff8 《sharepoint 2010云计算解决方案》使用SQL Azure 的BI 解决方案
- sharepoint国内网站一览表(转发)
- sharepoint 错误 6398
- sharepoint基本知识介绍
- sharepoint实践经验的速查手册
- Sharepoint任务甘特图和资源甘特图Webpart
- SharePoint Workspace 2010 概述 协作专家升级来了。
- SharePoint Workspace 2010 入门 - SharePoint 工作区 - Microsoft Office
- 下载详细信息: SharePoint 2010:专业开发人员评估指南和演练
- SharePoint 2010 新体验4 - SharePoint Workspace - Kaneboy的博客 - 51CTO技术博客
- SharePoint Workspace 2010 中的新增功能 - SharePoint 工作区 - Microsoft Office
- 沟通与协作:使用 Groove 和 SharePoint 创建强大的连接
- 支持的 SharePoint 外接程序和报表服务器的组合
- 处方1-1使用对象模型新建站点集
- 归档,SharePoint的好伙伴
- sharepoint 术语库
- SharePoint 各版本简称
- Office 365 SharePoint 迁移浅谈 (三)使用SP Migration API迁移