概述
spring boot 前后端分离整合shiro(一)快速上手
前言
第一次写博客,可能有些地方表达不是很好,不对的地方欢迎大家指出。
shiro简介
shiro是apache的一个权限框架,相比spring security更简单易用。在使用shiro前一定要对它执行的一个基本流程、内部组件有一个大概的了解。
shiro中有三个重要的概念:
- Subject
主体。可以是一个程序、一个用户,用来表示当前登录的对象。我们通过subject去操作,然后subject委托给Security Manager去执行真正的操作。 - Security Manager
shiro的核心,真正执行操作的地方。 - Realm
安全数据源。指用户的认证授权信息的来源,一般是数据库。
那么一个大概流程就是这样:
快速上手
数据库设计
基于rabc设计一个简单的权限数据库:
可以看出三者都是多对多的关系,所以我们需要三个主表:用户表、角色表、权限表,以及三个关联表。
建表:
create table user_info
(
user_id int auto_increment
primary key,
user_name varchar(100) not null comment '用户名',
login_name varchar(100) not null comment '登录名',
password varchar(100) not null comment '密码',
status int default 0 null comment '状态 1为锁定 0为正常,默认为0'
)
comment '用户表';
create table role
(
role_id int auto_increment
primary key,
role_name varchar(100) not null comment '角色名称',
description varchar(100) null comment '描述'
)
comment '角色表';
create table permission
(
pms_id int auto_increment
primary key,
url varchar(100) not null comment '接口路径',
description varchar(100) not null comment '权限说明',
pms_name varchar(100) not null comment '权限名称'
)
comment '权限表';
create table user_role
(
id int auto_increment
primary key,
user_id int not null comment '用户id',
role_id int not null comment '角色id',
isTransfer int default 0 null comment '是否可转让(0为否,1为是)',
constraint users_role_role_role_id_fk
foreign key (role_id) references role (role_id),
constraint users_role_users_user_id_fk
foreign key (user_id) references user_info (user_id)
)
comment '用户-角色关联表';
create table user_permission
(
id int auto_increment
primary key,
user_id int not null comment '用户id',
pms_id int not null comment '权限id',
constraint user_permission_permission_pms_id_fk
foreign key (pms_id) references permission (pms_id),
constraint user_permission_users_user_id_fk
foreign key (user_id) references user_info (user_id)
)
comment '用户-权限关联表';
create table role_permission
(
id int auto_increment
primary key,
role_id int not null comment '角色id',
pms_id int not null comment '权限id',
constraint role_permission_permission_pms_id_fk
foreign key (pms_id) references permission (pms_id),
constraint role_permission_role_role_id_fk
foreign key (role_id) references role (role_id)
)
comment '角色-权限关联表';
然后创建一个spring boot项目,导入基本的依赖和shiro的依赖:
<!-- shiro-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
使用mybatis generator快速生成实体类、mapper。
插入测试数据:
insert into user_info() value(default, '刘备', 'liubei', '111111', default);
insert into user_info() value(default, '张飞', 'zhangfei', '111111', default);
insert into user_info() value(default, '赵云', 'zhaoyun', '111111', default);
insert into role()value (default, 'root', '超级管理员');
insert into role()value (default, 'admin', '管理员');
insert into role()value (default, 'user', '用户');
insert into permission()value (default, '/api/commodity/update', '更新商品', 'commodityUpdate');
insert into permission()value (default, '/api/commodity/add', '删除商品', 'commodityDelete');
insert into permission()value (default, '/api/commodity/list', '商品列表', 'commodityList');
insert into permission()value (default, '/api/commodity/add', '新增商品', 'commodityAdd');
insert into permission()value (default, '/api/order/update', '修改订单', 'orderUpdate');
insert into permission()value (default, '/api/order/add', '新增订单', 'orderAdd');
insert into permission()value (default, '/api/order/delete', '删除订单', 'orderDelete');
insert into permission()value (default, '/api/order/list', '订单列表', 'orderList');
insert into permission()value (default, '/api/user/delete', '删除用户', 'userDelete');
insert into permission()value (default, '/api/user/update', '更新用户', 'userUpdate');
insert into permission()value (default, '/api/root/test', 'root测试', 'rootTest');
insert into user_role() value (default, 1, 1, 0);
insert into user_role() value (default, 2, 2, 0);
insert into user_role() value (default, 3, 3, 0);
insert into role_permission()value (default, 1, 9);
insert into role_permission()value (default, 1, 10);
insert into role_permission()value (default, 2, 1);
insert into role_permission()value (default, 2, 2);
insert into role_permission()value (default, 2, 3);
insert into role_permission()value (default, 2, 4);
insert into role_permission()value (default, 3, 3);
insert into role_permission()value (default, 3, 5);
insert into role_permission()value (default, 3, 6);
insert into role_permission()value (default, 3, 7);
insert into role_permission()value (default, 3, 8);
insert into user_permission()value (default, 1, 11);
最后
以上就是伶俐火龙果为你收集整理的spring boot 前后端分离整合shiro(一)快速上手的全部内容,希望文章能够帮你解决spring boot 前后端分离整合shiro(一)快速上手所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复