有几个grails菜单插件,例如Navigation插件。我需要向用户显示他可以根据用户个人资料访问的菜单项。实现这一目标的最简单方法是什么?是否有可以与某些grails安全插件集成的菜单插件?
答案 0 :(得分:2)
navigation plugin有一个使用isVisible
来有条件地隐藏菜单项的示例。如果您正在使用Spring Security插件,那么您可以将其与SpringSecurityUtils或注入的SpringSecurityService bean上的方法结合使用:
def springSecurityService
// ...
static navigation = [
[group:'userOptions', action:'login', order: 0, isVisible: { SpringSecurityUtils.ifAllGranted('ROLE_ADMIN') }],
[action:'logout', order: 99, isVisible: { springSecurityService.isLoggedIn() }]
]
或者,Spring安全性附带some tags,仅当用户未登录,具有什么角色等时才会呈现标记正文,因此您可以像这样手动滚动菜单项:
<sec:ifAllGranted roles="ROLE_ADMIN">
// Render <g:link../> to an admin page here.
</sec:ifAllGranted>