首页 文章

具有数据库和多个角色的Spring安全性?

提问于
浏览
2

我正在尝试使用spring 3.0创建一个应用程序 . 现在我决定尝试一下Spring-security和hibernate . 我已经看到有可能用数据库支持它,我看到了定义你自己的查询的引用?

现在我遇到的问题是我发现的教程不太清楚,他们认为用户只能有一个角色 . 我想给一些用户多个角色 .

所以我在考虑一个数据库方案:

User:

  • user_id

  • 用户名

  • 密码

  • registrationDate

User_Role:

  • user_id

  • role_id

Role:

  • role_id

  • rolename

现在我想知道是否有人有一些指向一些有用的教程/建议/评论 .

2 回答

  • 7

    您需要实现自己的UserDetails(为每个用户支持多个角色) . 然后,您自己的UserDetailsService实现会返回此自定义UserDetails实现,该实现将在daoAuthenticationProvider上注入 .

    有关完整示例,另请参阅我的答案@ Spring Security 3 database authentication with Hibernate .

  • 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注释并为您的CustomUser对象分配多个角色 . 很基本的 .

相关问题