2013-06-07 2 views
1

일부 솔루션을 찾았지만 그 중 아무 것도 나를 위해 작동하지 않았습니다. 아래 코드는스프링 보안 사용자 지정 역할 이름을 정의하는 방법

"Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Unsupported configuration attributes: [admin]" 

오류입니다. 자동 구성 속성을 "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> 

답변

7

.

그러나 역할 유권자에 접두사가 없으면 모든 보안 속성을 역할로 해석하기 때문에 좋은 생각이 아닙니다. 일부 접두사를 사용하는 것이 좋습니다 (기본값이 아닌 경우 ROLE_).

use-expressions="true"을 통해 표현식 기반 구문 분석을 활성화하고 access="hasRole('admin')" expresion을 사용할 수 있습니다. 이렇게하면 IS_AUTHENTICATED_ANONYMOUSLY 상태를 access="permitAll"으로 변경해야합니다.

+1

마지막으로, 내 의견으로는'IS_AUTHENTICATED_ANONYMOUSLY'를'permitAll'으로 대체해야합니다! –

+0

@TuanDang 코멘트에 감사드립니다. 내 대답을 업데이트했습니다. –

3

읽어야 당신은 access-decision-manager-ref="decisionMangerId" 속성을 통해 사용자 정의 구성 의사 결정 유권자와 자신의 결정 관리자 (예를 들어, org.springframework.security.access.vote.AffirmativeBased)를 제공해야

access="hasRole('admin')" 
관련 문제