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

时间:2010-04-25 08:58:51

标签: spring-security

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

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

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

用户:

  • user_id
  • 用户名
  • 密码
  • registrationDate

USER_ROLE:

  • USER_ID
  • ROLE_ID

作用:

  • role_id
  • 角色名

现在我想知道是否有人对某些有用的教程/建议/评论提出了一些建议。

2 个答案:

答案 0 :(得分:8)

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

另请参阅我的答案@ Spring Security 3 database authentication with Hibernate以获取完整示例。

答案 1 :(得分:1)

这样的事情:

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对象分配多个角色。非常基本。