2011-03-15 5 views
1

스프링 보안 3.0 프레임 워크를 사용하여 웹 애플리케이션과 CAS 통합 작업을하고 있습니다. 사용자가 ROLE_SUPERVISOR 역할을하는 경우에만 액세스 할 수있는 보안 페이지를 만들었습니다.스프링 보안 3.0에서 그룹 기반 액세스 제어 사용하기

  1. "usersByUsernameQuery" value="select username,password,enabled from users where username=?" 모두를 사용하여 완벽하게 일했다.

  2. "groupAuthoritiesByUsernameQuery"을 사용하는 경우 로그인 한 사용자의 그룹을 검색 할 수 있습니다. 예를 들면 다음과 같습니다. GRANTED Authorities는 group_permission 테이블에서 오는 관리자, 감독자입니다. 하지만 보안 페이지에 액세스하려고하면 ACCESS DENIED가 표시됩니다. 그룹 (ROLE_SUPERVISOR to Supervisors 등)에 할당 된 실제 역할/권한이 반영되거나 적절하게 검증되지 않은 것 같습니다.

내가 누락 된 항목이 있습니까? 제발 도와주세요. 내가 대답 나 자신을 발견

답변

0

는, 나는 내 사용자 지정 jdbcImplentation 클래스에서이 메소드를 오버라이드 (override)하기로하고

@SuppressWarnings("unchecked") 
protected List<GrantedAuthority> loadGroupAuthorities(String username) { 
    return getJdbcTemplate().query(groupAuthoritiesByUsernameQuery, new String[] {username}, new RowMapper() { 
     @SuppressWarnings("deprecation") 
     public Object mapRow(ResultSet rs, int rowNum) throws SQLException { 
      String roleName = rs.getString("permissionname"); 
      GrantedAuthorityImpl authority = new GrantedAuthorityImpl(roleName); 
      return authority; 
     } 
    }); 
} 
관련 문제