shiro 权限的怪癖想法

os_yun70345 发布于 2012/10/12 12:16
阅读 4K+
收藏 0

@江南白衣 你好,想跟你请教个问题:

看到你的springside里面的shiro权限应用,我结合我自己的想法,碰到了如下的门槛:

列举一个你以前的mini-web中的权限例子如下:

1。针对USER模块的 保存方法+权限判断

@RequiresPermissions("user:edit")
    @RequestMapping(value = "save/{id}")
    public String save(@ModelAttribute("user") User user, RedirectAttributes redirectAttributes) {}

2。针对GROUP模块的 保存方法+注解权限判断

@RequiresPermissions("group:edit")
    @RequestMapping(value = "save/{id}")
    public String save(@ModelAttribute("group") Group group, RedirectAttributes redirectAttributes) {}

思考点1:针对修改保存的方法,方法体里面的内容都差不多,如果有多个模块,每次都写这些重复的修改保存方法,则感觉公用性不强,所以按照自己的思想,用泛型写个公用的增删修改的controller,其他的controller继承公用的controller的就不需要在写这些CRUD的方法了。

但在加上权限的时候出现了问题,从上面的例子,可以看到@RequiresPermissions("user:edit"),@RequiresPermissions("group:edit")直接写的权限,因为controller公用的save方法中的权限判断,不可能直接写哪个模块的edit权限,所以请教SHIRO中的@RequiresPermissions可否写成@RequiresPermissions("${模块名}:edit")这种变量思想的表达式,来达到权限识别可以用到公用的controller 中。

   针对这种动态权限,其实可以在save方法体中 用如下方式可以实现

if(currentUser.isPermitted(entityClass.getSimpleName()+":save")){
            .........
 },但是希望有注解的方式可以实现。

其他的思路:如果SHIRO的权限注解不提供变量写法,可否自己写一个@interface后,将变量转成字符之后再传递给shiro去解析呢?!

------------------感觉写的罗嗦,不知道你有没时间来帮我分析分析,先谢了!---------

 

 

 

加载中
0
孔雀王子
遇到了同样的问题,哥们是否解决了呢?
0
B
Bruin
大兄弟,解决没
返回顶部
顶部