Grails 根据用户角色隐藏内容?
我目前正在Grails中开发一个web应用程序,我正在寻找一种基于当前登录到解决方案的用户隐藏菜单的方法 给你一点背景知识,这是我设置的Grails 根据用户角色隐藏内容?,grails,spring-security,Grails,Spring Security,我目前正在Grails中开发一个web应用程序,我正在寻找一种基于当前登录到解决方案的用户隐藏菜单的方法 给你一点背景知识,这是我设置的 具有映射的用户模型和角色模型的web应用程序 基于用户访问权限限制某些控制器的登录功能 我有菜单显示在每一页上 我知道如何将控制器限制为只允许有权查看它的用户,但我现在想限制看到下面这样的菜单,除非正确的用户登录,我如何才能做到这一点?它是否与从控制器渲染该元素有关 <div class="nav"> <ul class"nav">
<div class="nav">
<ul class"nav">
<li>
<g:link class="Tester" controller="Testing" action="test">
<g:message code="Tester" args"[entityName]" />
</g:link>
</li>
<li>
<g:link class="Tester2" controller="Testing" action="test2">
<g:message code="Tester2" args"[entityName]" />
</g:link>
</li>
</ul>
</div>
-
-
spring security core插件提供了一个可以帮助您的
<sec:ifAnyGranted roles="ROLE_TESTER">
<div class="nav">
...
</div>
</sec:ifAnyGranted>
...
如果您不使用spring security核心插件,可以实现以下功能
<g:if test="${userHaveRightRole}">
<div class="nav">
...
</div>
</g:if>
...
Ian很好地回答了您的问题,但我们应该在此处添加以保护服务器端控制器/操作,例如:
// At the controller level
@Secured(["hasRole('User')"])
class Testing
// action specific
@Secured(["hasAnyRole('SuperUser', 'Support', 'InternalUser')"])
def test() {
...
}
否则,链接只是从视图中隐藏,但仍然可以由任何人执行
HTH谢谢你的建议,我已经在做这件事来保护控制器的安全,但我很感谢你提供的信息。