java 接口权限控制_手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!...

SpringBoot实战电商项目mall(30k+star)地址:github.com/macrozheng/…

摘要

权限控管理作为后台管理系统中必要的功能,mall项目中结合Spring Security实现了基于路径的动态权限控制,可以对后台接口访问进行细粒度的控制,今天我们来讲下它的后端实现原理。

前置知识

学习本文需要一些Spring Security的知识,对Spring Security不太了解的朋友可以看下以下文章。

数据库设计

权限管理相关表已经重新设计,将原来的权限拆分成了菜单和资源,菜单管理用于控制前端菜单的显示和隐藏,资源管理用来控制后端接口的访问权限。

数据库表结构

其中ums_admin、ums_role、ums_admin_role_relation为原来的表,其他均为新增表。

java 接口权限控制_手把手教你搞定权限管理,结合Spring Security实现接口的动态权限控制!..._第1张图片

数据库表介绍

接下来我们将对每张表的用途做个详细介绍。

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 '前端图标',

hidden int(1) comment '前端隐藏',

primary key (id)

);

复制代码

ums_resource

后台资源表,用于控制后台用户可以访问的接口,使用了Ant路径的匹配规则,可以使用通配符定义一系列接口的权限。

create table ums_resource

(

id bigint not null auto_increment,

category_id bigint comment '资源分类ID',

create_time datetime comment '创建时间',

name varchar(200) comment '资源名称',

url varchar(200) comment '资源URL',

description varchar(500) comment '描述',

primary key (id)

);

复制代码

ums_resource_category

后台资源分类表,在细粒度进行权限控制时,可能资源会比较多,所以设计了个资源分类的概念,便于给角色分配资源。

create table ums_resource_category

(

id bigint not null auto_increment,

create_time datetime comment '创建时间',

name varchar(200) comment '分类名称',

sort int(4) comment '排序',

primary key (id)

);

复制代码

ums_role_menu_relation

后台角色菜单关系表,多对多关系,可以给一个角色分配多个菜单。

cr

你可能感兴趣的:(java,接口权限控制)