最近单位在接几个项目,开发框架功能类似,可重用的模块就是用户的管理与权限控制,所以研究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);

到这里已经把关联到的各个类都讲到了,但有点乱,由于本人很少整理过这方面的资料,欢迎各位多多指教!

posted on 2007-09-03 10:12  金熊  阅读(839)  评论(3编辑  收藏  举报