我正在尝试使用spring 3.0创建一个应用程序。 现在我决定尝试一下Spring-security和hibernate。 我已经看到用数据库支持它了,我看到了定义你自己的查询的参考?
现在我遇到的问题是我发现的教程不太清楚,他们认为用户只能有一个角色。我想给一些用户多个角色。
所以我在考虑一个数据库方案:
用户:
USER_ROLE:
作用:
现在我想知道是否有人对某些有用的教程/建议/评论提出了一些建议。
答案 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对象分配多个角色。非常基本。