手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!
2020/2/26 17:15:48
本文主要是介绍手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SpringBoot实战电商项目mall(30k+star)地址:github.com/macrozheng/…
摘要
权限控管理作为后台管理系统中必要的功能,mall项目中结合Spring Security实现了基于路径的动态权限控制,可以对后台接口访问进行细粒度的控制,今天我们来讲下它的后端实现原理。
前置知识
学习本文需要一些Spring Security的知识,对Spring Security不太了解的朋友可以看下以下文章。
- mall整合SpringSecurity和JWT实现认证和授权(一)
- mall整合SpringSecurity和JWT实现认证和授权(二)
- 仅需四步,整合SpringSecurity+JWT实现登录认证!
数据库设计
权限管理相关表已经重新设计,将原来的权限拆分成了菜单和资源,菜单管理用于控制前端菜单的显示和隐藏,资源管理用来控制后端接口的访问权限。
数据库表结构
其中
ums_admin
、ums_role
、ums_admin_role_relation
为原来的表,其他均为新增表。
数据库表介绍
接下来我们将对每张表的用途做个详细介绍。
ums_admin
后台用户表,定义了后台用户的一些基本信息。
create table ums_admin ( id bigint not null auto_increment, username varchar(64) comment '用户名', password varchar(64) comment '密码', icon varchar(500) comment '头像', email varchar(100) comment '邮箱', nick_name varchar(200) comment '昵称', note varchar(500) comment '备注信息', create_time datetime comment '创建时间', login_time datetime comment '最后登录时间', status int(1) default 1 comment '帐号启用状态:0->禁用;1->启用', primary key (id) ); 复制代码
ums_role
后台用户角色表,定义了后台用户角色的一些基本信息,通过给后台用户分配角色来实现菜单和资源的分配。
create table ums_role ( id bigint not null auto_increment, name varchar(100) comment '名称', description varchar(500) comment '描述', admin_count int comment '后台用户数量', create_time datetime comment '创建时间', status int(1) default 1 comment '启用状态:0->禁用;1->启用', sort int default 0, primary key (id) ); 复制代码
ums_admin_role_relation
后台用户和角色关系表,多对多关系表,一个角色可以分配给多个用户。
create table ums_admin_role_relation ( id bigint not null auto_increment, admin_id bigint, role_id bigint, primary key (id) ); 复制代码
ums_menu
后台菜单表,用于控制后台用户可以访问的菜单,支持隐藏、排序和更改名称、图标。
create table ums_menu ( id bigint not null auto_increment, parent_id bigint comment '父级ID', create_time datetime comment '创建时间', title varchar(100) comment '菜单名称', level int(4) comment '菜单级数', sort int(4) comment '菜单排序', name varchar(100) comment '前端名称', icon varchar(200) comment
这篇关于手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南