2010-04-25 54 views
2

我想使用spring 3.0來創建一個應用程序。 現在我決定嘗試一下我的手在春季安全和冬眠。 我已經看到可以使用databasem來支持它,並且我已經看到了定義自己的查詢的參考?春季安全與數據庫和多個角色?

現在我遇到的問題是我找到的教程不太清楚,他們認爲用戶只能有一個角色。我想給一些用戶多個角色。

所以我在想沿線的數據庫方案:

用戶:

  • USER_ID
  • 用戶名
  • 密碼
  • registrationDate

USER_ROLE:

  • USER_ID
  • ROLE_ID

作用:

  • ROLE_ID
  • 角色名

現在我想知道是否有人有一些有用的教程/建議/意見的指針。

回答

7

您需要實現自己的UserDetails(爲每個用戶支持多個角色)。這個自定義的UserDetails實現然後由您自己的UserDetailsService實現返回,該實現注入到daoAuthenticationProvider中。

另請參閱我的回答@Spring Security 3 database authentication with Hibernate的完整示例。

+0

我從數據庫瞭解認證部分。但是我們如何從數據庫中分配角色呢?你能回答我的問題: http://stackoverflow.com/questions/6893061/how-to-dynamically-decide-intercept-url-access-attribute-value-in-spring-securi – Cracker 2011-08-01 00:41:56

0

事情是這樣的:

public class CustomUserService implements UserDetailsService { 

    private UserDao userDao; 

    public CustomUserService(UserDao u) { 
     userDao = u; 
    } 

    public UserDetails loadUserByUsername(String username) { 
     CustomUser user = userDao.getUser(username); 
     if (user == null) 
     throw new UserNotFoundException("User "+username+" does not exist"); 
     return user; 
    } 
} 

和你的UserDAO的實現是一個簡單的DAO,可以很容易地使用Hibernate的註解和分配multple角色你CustomUser對象。很基本。