shiro 权限的怪癖想法
< 返回列表时间: 2012-10-12来源:开源中国
HDC调试需求开发(15万预算),能者速来!>>>
@江南白衣 你好,想跟你请教个问题:
看到你的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去解析呢?!
------------------感觉写的罗嗦,不知道你有没时间来帮我分析分析,先谢了!---------


热门排行