处理菜单中的问题 - 基于弹簧安全性的子菜单

时间:2010-12-30 06:56:48

标签: spring grails spring-security grails-plugin

我已经使用数据库中的requestmap表配置了spring security core plugin ..

现在在requestmap表中我有所有可能的网址,并且它是可以访问该网址的等效角色......

现在我想根据存储在requestmap表中的网址生成菜单和子菜单......

所以我的要求是检查菜单和网址的网址。针对登录用户权限的子菜单...如果登录用户有任何一个权限,那么我需要显示该主菜单和可用的子菜单....

例如我的项目中有一个名为user的菜单,其中包含以下子菜单:

**Users (main menu)**
Manage Users (sub menu)
Import Users (sub menu)

现在我的header.gsp内部已经使用if else条件成功实现了上述要求,例如:

if ( privs.contains("/users/manageUsers") || privs.contains("/users/importUsers"))

这里privs是来自requestmap表的登录用户的URL列表。

但是我想使用spring安全标记lib来实现这些,所以为了比较url,我发现了spring安全核心文档中的以下标记:

<sec:access url="/users/manageUsers">

但我有点混淆我如何使用标签库替换或调整..是否有任何标签可用于从多个网址检查并将其评估为真或假?

当然我可以使用带有一些标志逻辑的sec:access标签,但是有没有可以直接满足我要求的标签?

提前致谢...

1 个答案:

答案 0 :(得分:1)

<sec:access/>标记有一个expression属性,用于评估您传递的表达式: http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/6%20Helper%20Classes.html#6.1%20SecurityTagLib

您也可以非常轻松地创建自己的logical tag,只有在您的权限检查条件为真时才会呈现标记正文。