2013-03-18 3 views
4

나는 스프링 보안으로 배우기 위해 다른 것들을 시도해왔다. 나는 "users"테이블과 "authorities"테이블을 가진 기본 구조로 권한을 설정했다. 따라서 인증 공급자는 다음과 같습니다. 나는 기본적 database schema을 사용하기 때문에 사용자 정보를 가져 오기 위해 쿼리를 지정하지 이런 식으로스프링 그룹 권한, 기본 쿼리로 활성화하는 방법

<authentication-provider> 
     <password-encoder hash='md5'> 
      <salt-source user-property="username"/> 
     </password-encoder> 
     <jdbc-user-service data-source-ref="dataSource"/> 
    </authentication-provider> 

. 그래서 "authority-by-username-query"속성을 사용하지는 않지만 Spring은 기본 쿼리를 사용하고 있습니다 ("사용자 이름 선택, 권한 부여 권한 = 사용자 이름 =?"및 "사용자 이름, 암호 선택, 사용자 이름 =? ") 그래서 잘 작동합니다.

이제 전거 그룹으로 시도하고 싶습니다. 그래서 나는 스키마에 따라 테이블을 만든다. 내 질문에 그룹 권한을 활성화하는 방법? API documentation for JdbcDaoImpl은 "enableGroups"속성을 사용하여 "그룹 기반 권한"을 사용할 수 있다고 말합니다. "그룹 기반 당국"은 그런 자산을 가지고 있지 않습니다. 봄에는 default query이 있으므로 명시 적으로 지정할 필요가 없다고 생각합니다.

누군가가 기본 쿼리를 사용하여 그룹 기반 권한을 활성화 할 수 있도록 도와 줄 수 있습니까?

답변

5

불행하게도 JDBC 사용자 서비스enableGroups 속성에 대한 액세스를 제공하지 않습니다. 따라서 스프링의 빈 네임 스페이스를 사용하여 수동으로이 빈을 구성해야합니다. 나는이 같은 시도 할 수 있다고 생각 :

<authentication-provider user-service-ref="jdbcDaoImpl"> 
    <password-encoder hash='md5'> 
     <salt-source user-property="username"/> 
    </password-encoder> 
</authentication-provider> 


<beans:bean id="jdbcDaoImpl" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl"> 
    <property name="enableGroups" value="true" /> 
    <property name="enableAuthorities" value="false" /> 
    <property name="dataSource" ref="dataSource" /> 
</beans:bean>  
+0

근무 감사합니다. :) jdbc-user-service is it '에 대한 속성이 있다면 여전히 멋질 것입니다. –

+0

네, 멋지군요! –