我是靠谱客的博主 伶俐火龙果,最近开发中收集的这篇文章主要介绍spring boot 前后端分离整合shiro(一)快速上手,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

spring boot 前后端分离整合shiro(一)快速上手

前言

第一次写博客,可能有些地方表达不是很好,不对的地方欢迎大家指出。

shiro简介

shiro是apache的一个权限框架,相比spring security更简单易用。在使用shiro前一定要对它执行的一个基本流程、内部组件有一个大概的了解。
shiro中有三个重要的概念:

  1. Subject
    主体。可以是一个程序、一个用户,用来表示当前登录的对象。我们通过subject去操作,然后subject委托给Security Manager去执行真正的操作。
  2. Security Manager
    shiro的核心,真正执行操作的地方。
  3. Realm
    安全数据源。指用户的认证授权信息的来源,一般是数据库。
    那么一个大概流程就是这样:
    shiro执行流程

快速上手

数据库设计
基于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(一)快速上手所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部