论坛首页 Java企业应用论坛

大家来讨论一下Acegi的Web权限部分怎么设计

浏览 5772 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-31  

需求说明:控制动态系统菜单, 控制页面按钮权限, 角色30个左右  用户300左右。 菜单100个以上。 页面800个以上.

授权操作人员为客户。

由于客户不会有很多的专业知识,所以授权要比较的方便。

我的想法是做成下面的样子:(见图)

资源表的设计有以下几个字段:主键、 资源Code、 资源名、父资源ID、  资源Url、   资源Type、   扩展Url .

其中资源Type有: 菜单类型 跟 其他资源类型  (等扩展). 

 资源是树形结构。 其他资源类型必须跟在菜单类型下面。

授权的时候 菜单类型的对应图中的树型节点(粗体). 其他资源类型的对应树中的小体部分

动态菜单实现。   根据权限即 用户角色  取出 有权限 菜单类型 的资源 组成菜单树。

页面按钮权限。  标签实现。 标签绑定 其他资源类型 的资源 的 code.  根据用户角色 即授权判断是否显示。

在菜单中不体现的页面的权限控制:  根据扩展Url字段.  在新增资源的时候, 一个资源可以绑定很多的扩展Url .。  这些Url 被授予对应资源一样的权限(需要有一样的角色才能访问)。 (由于这个URL授权客户不太可能清楚  所以采用绑定的方式)。怎么绑定法呢? 一个菜单对应的页面 可能有很多链接 可以链接到别的页面 这些页面不再菜单体现  又要控制权限就采取绑定这个菜单的方式。 按钮也可以绑定扩展Url,应为按钮点击以后可以进入到一些新的页面。 防止直接输入URL的方法进入。

 

不知道大家有没有过这种需求, 希望我讲的大家能听懂  谢谢。 大家给点意见

  • 描述: 授权
  • 大小: 19.2 KB
   发表时间:2007-05-31  
可以看一下白衣在springside权限控制方面做的工作
感觉还可以
ps:acegi的配置文件实在多了一些....
0 请登录后投票
   发表时间:2007-06-04  
你的树形状菜单用什么做的,struts_menu?
0 请登录后投票
   发表时间:2007-06-04  
wumingsx 写道
你的树形状菜单用什么做的,struts_menu?


自己写标签。 struts_menu没用过
0 请登录后投票
   发表时间:2007-06-04  
我最近正在做LZ说的东西。
用Acegi实现动态的权限管理。使用hibernate. 我们是建立了  Url n:n  Role  1:1  User 三个POJO。

现在已经实现,正在使用。

不过问题多多。主要是设计的思路与Acegi的思路不一样。

Acegi的思路应该是,url都是固定的。角色从一开始就不是通过前台来控制的。

现在把Acegi改的面目全非,系统用起来,URL与权限纷繁复杂,甚至修改Acegi的人员都不知道新的权限分配怎么用。


在JDON看到某前辈说:见到的设计的好的系统,都是技术上不复杂的。虽然,但是最近对这句话真是深有体会!

1 请登录后投票
   发表时间:2007-06-04  
动态的权限分配,是我上两个星期,前前后后的调试加到一起,大概60个小时吧。
而且是别人设计好,我只负责代码的实现。(所以到现在我对我弄的东西也有点雾水)

说一下现在我们系统遇到的麻烦:

1. url不规范。 
   如:  cm/post.view    对应管理员
         cm/list.view    对应一般用户,

   那么这里使用Acegi的URL授权就很不好写。

2. 由于使用了动态的URL授权,所以每个URL都要给每个角色授权一下。很墨迹。例如Acegi本来的配置,应该是这样:
   /admin/**    对应 admin
   /**          对应 anonymous

现在我们的系统要这样:
   /admin/**    对应 admin
   /**          对应 admin
   /**          对应 anonymous

哎。现在3个角色, 32个URL, 弄的动态配置的POJO就好多数据。


3. 有时候会出现莫名其妙的问题。可能是修改了 Acegi的塬代码,也有可能是Acegi与Hibernate的配合出了问题?更有可能是我们对Acegi与Hibernate理解的都不深刻?  有时候会莫名其妙的Access Denied, 有时候又莫名其妙的好了。 不知道怎么回事。还有的时候,对URL记录的读的顺序有要求。晕啊。


最后一点意见: 对Acegi的使用,我的建议是:
1. 按照Acegi的官方意见,在Demo的基础上改
2. 不要使用动态权限的思想。这个在一开始程序设计上就要避免
3. url 在一开始就要有合适的命名。如 /admin/**  一定对应admin角色,  等等。

说的不好,欢迎各位朋友指点!
2 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics