2011-03-15 68 views
1

我與使用Spring Security 3.0 framework.I我的web應用程序集成中科院創建工作只有當用戶有ROLE_SUPERVISOR角色將被訪問的安全網頁。春季安全使用組的訪問控制3.0

  1. 當使用 "usersByUsernameQuery" value="select username,password,enabled from users where username=?" 一切工作完美。

    使用"groupAuthoritiesByUsernameQuery"
  2. ,我能夠檢索登錄的用戶的組。例如。它表示GRANTED權限是來自group_permission表的管理員,主管。 但是當我試圖訪問受保護的頁面,它顯示訪問被拒絕。這似乎是我分配給組(對於e.g ROLE_SUPERVISOR到主管)不被反射或適當的驗證中的實際作用/ permisssions。

我錯過了什麼嗎?請幫助我。

回答

0

,我發現自己的答案,我應該在我的自定義jdbcImplentation類重寫這個方法

@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; 
     } 
    }); 
}