【问题标题】:Spring security with database and multiple roles?具有数据库和多个角色的 Spring 安全性?
【发布时间】:2011-02-12 01:21:48
【问题描述】:

我正在尝试使用 spring 3.0 制作应用程序。 现在我决定尝试一下spring-security和hibernate。 我已经看到可以使用数据库来支持它,并且我已经看到了定义您自己的查询的参考?

现在我遇到的问题是,我一直在寻找的教程不太清楚,并且他们假设用户只能拥有一个角色。我想给一些用户多个角色。

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

用户:

  • user_id
  • 用户名
  • 密码
  • 注册日期

用户角色:

  • user_id
  • role_id

角色:

  • role_id
  • 角色名

现在我想知道是否有人对一些有用的教程/建议/cmets 有一些指示。

【问题讨论】:

    标签: spring-security


    【解决方案1】:

    您需要实现自己的UserDetails(支持每个用户的多个角色)。此自定义 UserDetails 实现随后由您自己的 UserDetailsService 实现返回,该实现注入您的 daoAuthenticationProvider

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

    【讨论】:

    【解决方案2】:

    类似这样的:

    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,可以轻松地使用休眠注释并将多个角色分配给您的 CustomUser 对象。很基本。

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 2013-03-07
      • 2017-11-25
      • 2011-03-26
      • 2013-05-17
      • 1970-01-01
      • 2015-05-22
      • 2015-02-18
      • 2015-11-13
      相关资源
      最近更新 更多