2014-02-07 1 views
5

프로젝트에서 나는 역할 설명보다는 역할 ID를 기반으로 인증을 수행하며이 매핑은 데이터베이스에 저장됩니다.스프링 보안 제거 RoleVoter 접두어

제 질문은 스프링 보안의 RoleVoter 접두어를 제거하여 위와 같이 디자인을 구현하려면 어떻게합니까?

답변

6

스프링 보안 RoleVoter에는 부여 된 권한을 구별하기 위해 접두사가 필요합니다. 자세한 내용은 answer을 참조하십시오.

변경하려는 경우 언제든지 사용자 지정 AccessDecisionManager and configure it with a custom RoleVoter`를 제공 할 수 있습니다.

는 사용자 정의 액세스 결정 매니저의 예입니다

public class MyAccessDecisionManager extends AffirmativeBased { 


    public MyAccessDecisionManager() { 
     super(); 
     List<AccessDecisionVoter> decisionVoters = new ArrayList<AccessDecisionVoter>(); 
     RoleVoter roleVoter = new MyCustomRoleVoter(); 
     decisionVoters.add(roleVoter); 
     AuthenticatedVoter authenticatedVoter = new AuthenticatedVoter(); 
     decisionVoters.add(authenticatedVoter); 
     setDecisionVoters(decisionVoters); 

    } 

그리고 기본 액세스 결정 매니저의 장소에 사용하는 :

<bean id="myAccessDecisionManager" class="full.package.name.MyAccessDecisionManager" /> 

<security:http access-decision-manager-ref="myAccessDecisionManager"> 
    ... 
</security:http> 
+0

어떻게 봄'에서 그것을 구성해야합니까 -security.xml'? – khateeb

+0

XMLconfig를 사용하여 답변을 업데이트했습니다. –

+0

생성자 AffirmativeBased()는 스프링 보안 4.1.3에서 정의되지 않았습니다. – Julien