【发布时间】:2011-05-23 20:43:17
【问题描述】:
我有一个 uri,例如 someController/someAction?param1=aa¶m2=bb
是否有一些 grails 方法可以从这个 uri 中提取控制器名称和动作名称。
或者shiro有什么方法可以检测这个uri是允许的吗?
我有一个域 Menu(name,url),现在想获取当前用户允许的菜单列表。
url 比如/auth/login(可能映射为user:login), /user/login
所以两天前我问了这个问题。
现在我将菜单更改为(名称、控制器、操作、参数),并像这样过滤菜单列表:
def subject = SecurityUtils.subject;
menuList.each{
if(it.permission){
def perm = shiroPermissionResolver.resolvePermission("${it.permission.controller}:${it.permission.action}")
def isPermitted = subject.isPermitted(perm)
println "$isPermitted -> ${it.permission.controller}:${it.permission.action}"
}
}
对不起,我的英语不好,谢谢你的回复。
顺便说一句,这是另一个关于如何缓存 shiro 的问题: how to use cache permissions in grails shiro
泛滥: 那么你认为存储菜单列表的更好方法是什么? 原因:
- 由于用户的权限,它需要向用户显示不同的菜单。
- 有时我们更新了一个 web 应用程序,但想稍后向用户显示菜单。 所以我们只需要改变比如一个menu.visible。 (比更改硬代码 cfg 或源代码更好)。
- 我们正在使用 extjs 来显示菜单(所以导航插件无法使用)。
【问题讨论】:
-
对不起,我无法回答这个问题,你能给我举个例子吗?
-
我只是认为如果我有一个 url,如何将其更改为控制器 + 动作。也许 /auth/login 正在映射到 user:login
-
您能帮我理解您为什么将用户界面菜单存储在域类中吗?
标签: grails shiro url-mapping