您的位置:首页 > 其它

控制视图页面的访问权限

2008-10-27 16:35 246 查看
控制视图页面的访问权限 问题:

控制视图页面的访问权限,设置只有指定组的用户可以访问。

解决方案:

写一个webpart,添加到需要控制权限的页面,如何当前用户不属于指定的组,则不允许用户访问当前页面。

代码:


//----------------------------------------------------------------


//CodeArt


//


//文件描述:


//


//创 建 人: jianyi


//创建日期: 2008-7-11


//


//修订记录:


//




//----------------------------------------------------------------


using System;


using System.Collections.Generic;


using System.Collections;


using System.ComponentModel;


using System.Text;


using System.Web;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.WebControls.WebParts;


using System.Web.UI.HtmlControls;




using Microsoft.SharePoint;


using System.Collections.Specialized;


using Microsoft.SharePoint.Utilities;




namespace ShareOffice.WebParts






{




public class RightControlPart : WebPart






{


private string _Groups = "";


[WebBrowsable]


[WebDescription("有权访问的组,用;间隔")]


[Personalizable(PersonalizationScope.Shared)]


public string Groups






{




get

{ return _Groups; }




set

{ _Groups = value; }


}




protected override void OnLoad(EventArgs e)






{


base.OnLoad(e);




this.Title = "";




base.ChromeType = PartChromeType.None;




SPUser user = SPContext.Current.Web.CurrentUser;




//管理员可以访问


if (user.IsSiteAdmin && String.IsNullOrEmpty(this.Groups))


return;




//检测用户是否属于配置的组


string[] arr = this._Groups.Split(';');




StringCollection userGroups = new StringCollection();


foreach (SPGroup g in user.Groups)






{


userGroups.Add(g.Name.ToLower());


}




foreach( string g in arr )






{


if (userGroups.Contains(g.ToLower()))


return;


}




SPUtility.TransferToErrorPage("您没有权限访问此视图.");


}


}


}



这种方法的一个适用场景:
一个列表做两个视图:
视图1(默认视图): 采用某个用户字段=[本人做过滤],普通用户可以查看到跟自己有关的数据。
视图2:显示所有记录。在视图2页面上放置这个权限控制webpart,设置只有某个组可以访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: