2.Spring Security 用户,角色和权限 详解

一.前言

1.介绍
  • 上文主要介绍了后端使用Spring Security对API进行保护
  • 本文主要介绍Spring Security使用数据库存储角色和权限,并在此情况下进行登录操作,同时介绍了记住我操作
2.项目例子
3.概述
  • 使用数据库存储用户,角色和权限,代码中使用jpa进行数据库访问
  • 自定义UserDetailsService用于登陆时获取用户信息
  • 添加rememberMe记住我的功能
  • sql文件在项目模块中login.sql
  • 基于上篇后端使用Spring Security对API进行保护添加登陆的新功能

二.Spring Security用户,角色和权限

1. 数据库表设计
  • 用户,角色,权限,之间多对多关系
  • 用户实体类,包含角色
    @Entity
    @Table(name = "user_account")
    public class User {
         
    
        @Id
        @Column(unique = true, nullable = false)
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
        private String firstName;
    
        private String lastName;
    
        private String email;
    
        @Column(length = 60)
        private String password;
    
        private boolean enabled;
        private boolean isUsing2FA;
    
        private String secret;
    
        @ManyToMany(fetch = FetchType.EAGER)
        @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
        private Collection<Role> roles;
    
  • 角色实体类,包含权限
    @Entity
    public class Role {
         
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;
    
        @ManyToMany(mappedBy = "roles")
        private Collection<User> users;
    
        @ManyToMany
        @JoinTable(name = "roles_privileges", joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
        private Collection<Privilege> privileges;
    
        private String name;
    
  • 权限实体类
    @Entity
    public class Privil
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值