最近单位在接几个项目,开发框架功能类似,可重用的模块就是用户的管理与权限控制,所以研究Community Server 2007 用户管理与权限控制。
先到GOOGLE搜索CS2007 SDK版本,简单的安装配置之后系统可以正常运行了,用户管理是利用了ASPNET20的模块,权限控制是基于角色进行管理的,这两个方面实现还没有达到我们项目的需求,它要达到基于模块的权限控制,比如文件下载,它再细分为哪些角色只读,哪些可以写,哪此可以完全控制等等(图)
具体是如何实现的呢,我们有两个任务,它们分别是后台是如何更新权限,前台如何进行检查控制。
一、Save_Click>UpdatePermission>“Permissions>CommonDataProvider>SqlCommonDataProvider”>
CreateUpdateDeletePermission(引号里面的为类名,具体方法没有给出),下图是数据库实现的关键
".cs_Section_Permission_CreateUpdateDelete"就是存储过程的名字,到此第一步的整个思路就完成了。
二、前台从这里入口 grouplist.aspx>aggregateentrylist.axcx("<CSFile:EntryList...")>与下图的类名对应(关键)
<CSFile:FolderData runat="server" LinkCssClass="CommonImageTextButton CommonUploadButton" LinkTo="AddEntry" ResourceName="Files_Button_Upload" ResourceFile="FileGallery.xml" />
FolderData.CS下面的AddEntry的ValidatePermissions 返回有效连接或不显示(基于URL)
................
case FolderLinkTo.AddEntry:
if (Permissions.ValidatePermissions(folder, Permission.Post, csContext.User))
{
link = new HyperLink();
link.NavigateUrl = FileGalleryUrls.Instance().EntryAdmin(folder.ApplicationKey, -1);
}
else
this.AutomatedVisible = false;
break;
基于Form的POST,GET
<CSFile:DownloadEntryForm.....>
DownloadEntryForm.CS
Permissions.AccessCheck(folder, Permission.Read, csContext.User, entry);
到这里已经把关联到的各个类都讲到了,但有点乱,由于本人很少整理过这方面的资料,欢迎各位多多指教!