加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Springboot + Spring Security 实现前后端分离登录认证及权限控

发布时间:2021-07-06 05:26:24 所属栏目:大数据 来源: https://www.cnblogs.com/xiado
导读:Springboot + Spring Security 实现前后端分离登录认证及权限控制 前言 本文主要的功能 文章目录 文章正文 一、准备工作 1、统一错误码枚举 2、统一json返回体 3、返回体构造工具 4、pom 5、配置文件 二、数据库表设计 建表语句 初始化表数据语句 三、Spring

Springboot + Spring Security 实现前后端分离登录认证及权限控制

前言
本文主要的功能
文章目录
文章正文
一、准备工作
1、统一错误码枚举
2、统一json返回体
3、返回体构造工具
4、pom
5、配置文件
二、数据库表设计
建表语句
初始化表数据语句
三、Spring Security核心配置:WebSecurityConfig
四、用户登录认证逻辑:UserDetailsService
1、创建自定义UserDetailsService
2、准备service和dao层方法
(1)根据用户名查询用户信息
(2)根据用户名查询用户的权限信息
五、用户密码加密
六、屏蔽Spring Security默认重定向登录页面以实现前后端分离功能
1、实现登录成功/失败、登出处理逻辑
(1)登录成功
(2)登录失败
(3)登出
2、在WebSecurityConfig中的configure(HttpSecurity http)方法中声明
八、会话管理(登录过时、限制单用户或多用户登录等)
1、限制登录用户数量
2、处理账号被挤下线处理逻辑
3、在WebSecurityConfig中声明
九、实现基于JDBC的动态权限控制
1、权限拦截器
2、安全元数据源FilterInvocationSecurityMetadataSource
3、访问决策管理器AccessDecisionManager
4、在WebSecurityConfig中声明
十、最终的WebSecurityConfig配置
十一、结束语

原文中数据库更正如下:

 1 DROP TABLE IF EXISTS `sys_user`;
 2 create table sys_user
 3 (
 4     id                      int auto_increment
 5         primary key, 6     account                 varchar(32)          not null comment '账号',1)"> 7     user_name               varchar(用户名 8     password                varchar(64)          用户密码 9     last_login_time         datetime             上一次登录时间10     enabled                 tinyint(1) default 1 账号是否可用。默认为1(可用)11     account_non_expired             tinyint(是否过期。默认为1(没有过期)12     account_non_locked      tinyint(账号是否锁定。默认为1(没有锁定)13     credentials_non_expired tinyint(证书(密码)是否过期。默认为1(没有过期)14     create_time             datetime             创建时间15     update_time             datetime             修改时间16     create_user             int                  创建人17     update_user             修改人'
18 )
19     comment 用户表;
20 DROP TABLE IF EXISTS `sys_role`;
21 create table sys_role
22 23     id               int auto_increment comment 主键id24 25     role_code             varchar(32) 管理code26     role_name        varchar(角色名27     role_description varchar(64) 角色说明28 29     comment 用户角色表30 DROP TABLE IF EXISTS `sys_permission`;
31 create table sys_permission
32 33     id              34 35     permission_code varchar(权限code36     permission_name varchar(权限名37 38     comment 权限表39 create table sys_role_permission_relation
40 41     id            42 43     role_id       int 角色id44     permission_id 权限id45 46  comment 角色-权限关联关系表47 
48 create table sys_user_role_relation
49 50     id      51 52     user_id 用户id53     role_id 54 55     comment 用户角色关联关系表56 create table sys_request_path
57 58     id          59 60     url         varchar(64)  not 请求路径61     description varchar(128) 路径描述62 63     comment 64 create table sys_request_path_permission_relation
65 66     id            67     url_id        请求路径id68     permission_id 69 70     comment 路径权限关联表71 -- 用户
72 INSERT INTO sys_user (id,account,user_name,password,last_login_time,enabled,account_non_expired,account_non_locked,credentials_non_expired,create_time,update_time,create_user,update_user) VALUES (1,user1',1)">用户1$2a$10$47lsFAUlWixWG17Ca3M/r.EPJVIb7Tv26ZaxhzqN65nXVcAhHQM4i2019-09-04 20:25:362019-08-29 06:28:361);
73 INSERT INTO sys_user (id,1)">2,1)">user2用户2$2a$10$uSLAeON6HWrPbPCtyqPRj.hvZfeM.tiVDZm24/gRqm4opVze1cVvC2019-09-05 00:07:122019-08-29 06:29:24274 -- 角色
75 INSERT INTO sys_role (id,role_code,role_name,role_description) VALUES (admin管理员管理员,拥有所有权限76 INSERT INTO sys_role (id,1)">user普通用户普通用户,拥有部分权限77 -- 权限
78 INSERT INTO sys_permission (id,permission_code,permission_name) VALUES (create_user创建用户79 INSERT INTO sys_permission (id,1)">query_user查看用户80 INSERT INTO sys_permission (id,1)">3,1)">delete_user删除用户81 INSERT INTO sys_permission (id,1)">4,1)">modify_user修改用户82 -- 请求路径
83 INSERT INTO sys_request_path (id,url,description) VALUES (/getUser查询用户84 -- 用户角色关联关系
85 INSERT INTO sys_user_role_relation (id,user_id,role_id) VALUES (86 INSERT INTO sys_user_role_relation (id,1)">87 -- 角色权限关联关系
88 INSERT INTO sys_role_permission_relation (id,role_id,permission_id) VALUES (89 INSERT INTO sys_role_permission_relation (id,1)">90 INSERT INTO sys_role_permission_relation (id,1)">391 INSERT INTO sys_role_permission_relation (id,1)">492 INSERT INTO sys_role_permission_relation (id,1)">5,1)">93 INSERT INTO sys_role_permission_relation (id,1)">6,1)">94 -- 请求路径权限关联关系
95 INSERT INTO sys_request_path_permission_relation (id,url_id,permission_id) VALUES (null,1)">2);

?



原文链接:https://blog.csdn.net/I_am_Hutengfei/article/details/100561564

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读