Spring security如何定义自定义角色名

Spring security如何定义自定义角色名,spring,spring-security,Spring,Spring Security,我找到了一些解决办法,但没有一个对我有效。下面的代码给出 "Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Unsupported configuration attributes: [admin]" 错误。当我将auto-config属性更改为true时,再次给出相同的错误 <http auto-config="false"> <in

我找到了一些解决办法,但没有一个对我有效。下面的代码给出

"Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Unsupported configuration attributes: [admin]" 
错误。当我将auto-config属性更改为true时,再次给出相同的错误

<http auto-config="false">
    <intercept-url pattern="/pages/login.xhtml*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <intercept-url pattern="/**" access="admin" />
    <form-login login-page='/pages/login.xhtml' default-target-url="/**"
                authentication-failure-url="/pages/login.xhtml"/>
    <logout logout-success-url="/pages/logout.xhtml" />
</http>

<beans:bean id="roleVoter" class="org.springframework.security.access.vote.RoleVoter">
    <beans:property name="rolePrefix" value=""/>
</beans:bean>
应改为:

access="hasRole('admin')"
应改为:

access="hasRole('admin')"

您需要通过access decision manager ref=decisionMangerId属性为您的自定义配置决策投票者提供您自己的决策管理器,例如org.springframework.security.access.vote.AffirmativeBased

但是请注意,在角色投票者中没有前缀不是一个好主意,因为它只会尝试将所有安全属性解释为角色。如果不是默认角色,我强烈建议使用一些前缀


或者,您可以通过use expressions=true和use access=hasRole'admin'expresion启用基于表达式的解析。采用这种方式时,您还需要更改您的IS_AUTHENTICATED_匿名条件,访问权限=permitAll。

您需要通过访问决策管理器ref=decisionMangerId属性为您的自定义配置决策投票者提供您自己的决策管理器,例如org.springframework.security.access.vote.AffirmativeBased

但是请注意,在角色投票者中没有前缀不是一个好主意,因为它只会尝试将所有安全属性解释为角色。如果不是默认角色,我强烈建议使用一些前缀


或者,您可以通过use expressions=true和use access=hasRole'admin'expresion启用基于表达式的解析。当采用这种方式时,您还需要使用access=permitAll更改您的IS\u AUTHENTICATED\u匿名条件。

最后一种方式,我认为您还需要将IS\u AUTHENTICATED\u匿名替换为permitAll!用最后一种方法,我认为你还需要替换permitAll匿名认证的IS___!