单一角色Spring安全实施

时间:2018-06-03 10:03:26

标签: spring-boot spring-security

我一直致力于春季启动迷你项目,我被困在这一部分。

因此,我们的项目可能包含许多用户,但每个用户只能拥有一个角色

有三个角色:

  • 学员
  • 主持人
  • ADMIN

ERD包括:

ERD

我的问题是我可以根据我的ERD实现Spring安全注册和授权,因为我从互联网教程中看到的用户和角色实体之间存在多对多的关系,或者我的ERD是错误的?

希望有人能够启发我。

1 个答案:

答案 0 :(得分:1)

是的,你可以。

  1. 创建您自己的Authentication
  2. 实施
  3. 接口定义了方法getAuthorities()。它会返回Collection,但您可以自行决定如何实施它。
  4. 确保您的登录过滤器(或您可能拥有的任何身份验证机制)返回您的自定义AuthenticatedUser(而不是您在示例中找到的UsernamePasswordAuthenticationToken
  5. 示例:

    public class AuthenticatedUser implements Authentication{
        private User user;
        public AuthenticatedUser(User user){
            this.user = user;
        }
        @Override
        public Collection<? extends GrantedAuthority> getAuthorities() {
            return Arrays.asList(new SimpleGrantedAuthority(user.getRole()));
        } 
        // rest of the code omitted
    }
    

    我不确定您是否理解您对注册的引用 - 用户注册通常是自定义实现;你不应该在那里遇到任何问题。