浏览 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的方法进入。
不知道大家有没有过这种需求, 希望我讲的大家能听懂 谢谢。 大家给点意见 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-31
可以看一下白衣在springside权限控制方面做的工作
感觉还可以 ps:acegi的配置文件实在多了一些.... |
|
返回顶楼 | |
发表时间:2007-06-04
你的树形状菜单用什么做的,struts_menu?
|
|
返回顶楼 | |
发表时间:2007-06-04
wumingsx 写道 你的树形状菜单用什么做的,struts_menu?
自己写标签。 struts_menu没用过 |
|
返回顶楼 | |
发表时间:2007-06-04
我最近正在做LZ说的东西。
用Acegi实现动态的权限管理。使用hibernate. 我们是建立了 Url n:n Role 1:1 User 三个POJO。 现在已经实现,正在使用。 不过问题多多。主要是设计的思路与Acegi的思路不一样。 Acegi的思路应该是,url都是固定的。角色从一开始就不是通过前台来控制的。 现在把Acegi改的面目全非,系统用起来,URL与权限纷繁复杂,甚至修改Acegi的人员都不知道新的权限分配怎么用。 在JDON看到某前辈说:见到的设计的好的系统,都是技术上不复杂的。虽然,但是最近对这句话真是深有体会! |
|
返回顶楼 | |
发表时间: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角色, 等等。 说的不好,欢迎各位朋友指点! |
|
返回顶楼 | |