如何通过域中的Spring安全角色过滤用户

时间:2014-02-16 14:56:56

标签: spring grails spring-security

这可能吗?如果没有,那么我如何在我的gsp中过滤此代码的特定角色?

<div class="fieldcontain ${hasErrors(bean: tableInstance, field: 'user', 'error')} ">
<label for="user">
    <g:message code="table.user.label" default="User" />        
</label>
<g:select id="user" name="user.id" from="${rms.User.list()}" optionKey="id" value="${tableInstance?.user?.id}" class="many-to-one" noSelection="['null': '']"/>

上面的代码段用于基本的创建和编辑功能

1 个答案:

答案 0 :(得分:2)

使用spring-security插件提供的sec:access标记。

<sec:access expression="hasRole('ROLE')">
      <div class="fieldcontain ${hasErrors(bean: tableInstance, field: 'user', 'error')} ">
       <label for="user">
          <g:message code="table.user.label" default="User" />        
       </label>
       <g:select id="user" name="user.id" from="${rms.User.list()}" optionKey="id" value="${tableInstance?.user?.id}" class="many-to-one" noSelection="['null': '']"/>
</sec:access>

或者您可以使用sec:ifAnyGranted代码

<sec:ifAnyGranted roles="ROLE1, ROLE2, ...">
    ....
</sec:ifAnyGranted>

修改

def users = UserRole.findAllByRole(Role.get('ROLE'))*.user.unique()