首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计网站许可方案的资源

设计网站许可方案的资源
EN

Stack Overflow用户
提问于 2009-12-02 20:44:03
回答 2查看 1.2K关注 0票数 3

我正在开发一个需要访问许可方案的站点。我不知道我想如何制订这个计划,而我亦很难找到良好的资源,以决定如何实施一个审批计划,以及如何规划该计划应能做些甚麽。

我有很多问题,但没有很多确凿的信息。我也不能说出答案的正反两部分。

  • 它应该是基于角色的,如果用户有角色的话?
  • 应该是基于组的吗?
    • 团体是否应该成为团体的成员,就像在AD中一样?
    • 还是应该只有用户才能成为组的成员?

  • 如何处理权限默认值?
    • 应该根据创建页面的工具设置be吗?
    • 创建用户应该设置页面创建的权限吗?

  • 用户应该能够创建自己的组吗?

你在设计许可方案方面有什么经验?在这方面,我是相当绿色的,任何好的资源,书籍,博客等等,都会很有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-02 21:03:24

KnowledgeTree许可系统的灵活性和威力给我留下了深刻的印象。

它大致组织如下:业务单元、->组(和子组)、->角色、->用户

KT是一个文档管理系统,但所有权限都是在目录级别分配的,而不是在资产本身上分配的。每个资产和子目录从其父目录继承权限。

这允许您在组的基础上设置相当广泛的权限,并通过对角色设置更显式的权限来缩小权限范围。然后根据需要将用户分配给角色;用户A可能被分配给目录X的编辑器角色,而不是Y。这些权限将层叠在用户A已经存在的任何组之上。

我唯一的抱怨是,没有真正的方法直接定义用户的特定权限。如果我想让用户B对所有目录都有一定的访问权限,我要么必须将它们添加到一个组中,要么将它们分配给一个角色(这个角色必须被创建或分配给目录)。

TYPOlight webCMS在某种程度上纠正了这个问题,尽管它几乎没有那么健壮。CMS中的每个用户都可以使用其组权限(仅),可以使用单独的权限扩展其组权限,也可以使用单独的权限(仅)。

票数 0
EN

Stack Overflow用户

发布于 2009-12-02 21:10:49

这些想法可能对您有任何好处,但我从头开始构建了一个基于web的、权限驱动的系统(我需要低级别的控制来与另一个系统集成),如下所示:

  • 用户或组可能具有权限。
  • 用户的有效权限集是用户和用户所属组的所有允许和拒绝的超集
  • Denys覆盖允许
  • 用户级权限覆盖任何组设置(允许您授予管理员、主管等权限)
  • 用户的有效权限集在登录时存储在会话中,然后通过权限管理器(使用按位操作)测试权限。
  • 每个权限区域都有自己的位掩码,这些掩码存储在db中,允许您在构建过程中自动生成权限实用程序类。实用程序类如下所示: 公共静态类Area1 {公共静态int AreaId { get {返回1;}公共静态int Permission1 {获取{返回1;}公共静态int Permission2 {获取{返回2;}公共静态int Permission3 {获取{返回4;}}公共静态类Area2 {公共静态int AreaId {获取{返回2;}}公共静态int Permission1 {获取{返回1;}公共静态int Permission2 {获取{返回2;}}公共静态int{返回2;}公共静态int Permission3 { get { get 4;}公共静态int Permission4 { get { static 8;}公共静态int Permission5 {get{ static 16;}}} 等等..。
  • 然后可以定义权限基页: 公共类PermissionsPage: BasePage { int _permissionAreaId;int _permissionValue;string _page;public PermissionsPage(int permissionAreaId,int permissionValue):base() { Init += new (PermissionsPage_Init);_permissionTypeId = permissionTypeId;_permissionValue = permissionValue;}voidPermissionsPage_Init(对象发送方,EventArgs e) { if (!IsPostBack) {if=();如果(!PermissionsManager.TestPermission(UserWebSession.User,_permissionTypeId,_permissionValue){ //句柄权限被拒绝,则{ //日志页访问} }
  • 然后,实用程序文件允许您在开发过程中执行此类操作: 公共部分类yourControlledPage :整个页面上的PermissionsPage { // yourControlledPage():base(PermissionDef.Area1.AreaId,PermissionDef.Area1.Permission1) {}
  • 或 //对特定控件的测试权限( PermissionsManager.TestPermission(UserWebSession.User,PermissionDef.Area2.AreaId,PermissionDef.Area2.Permission4);

*例如,将'Area1‘和'Permission1’替换为有意义的名称。很明显!

然后,很可能会有第三方库,您可以很好地插入并完成您需要的一切.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1835672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档