使用sa-token 进行权限控制

使用sa-token 进行权限控制
支持路由鉴权+注解鉴权
框架地址:https://sa-token.dev33.cn/
项目整体思路:本项目采用RBAC(基于角色的权限访问控制)用户关联多个角色,角色关联菜单/权限。sys_menu 表中通过type字段区别是菜单还是权限。通过当前登录用户角色获取对应的菜单集合和权限集合返给前端,前端使用menu表中url 或者 code码来校验当前页面按钮等相关权限。后端采用请求路由来校验权限。
项目包含功能:

  1. 多数据源
  2. knifej 3.0文档
  3. redis
  4. 项目初始化sql 在resources目录下。
  5. 登录、注册、退出、获取登录状态、获取菜单列表、获取权限码列表等权限使用闭合回路。

一、在 springboot 项目中使用sa-token

1.1 依赖引入

    <properties>
        <sa-token.version>1.29.0sa-token.version>
        <commons-pool2.version>2.7.0commons-pool2.version>
        <fastjson.version>1.2.56fastjson.version>
        <knife4j.version>3.0.3knife4j.version>
        <dynamic.datasource.version>3.0.0dynamic.datasource.version>
        <mybatis-plus.version>3.5.0mybatis-plus.version>
    properties>
    
        <dependency>
            <groupId>cn.dev33groupId>
            <artifactId>sa-token-spring-boot-starterartifactId>
            <version>${sa-token.version}version>
        dependency>
        
        <dependency>
            <groupId>cn.dev33groupId>
            <artifactId>sa-token-dao-redisartifactId>
            <version>${sa-token.version}version>
        dependency>
        
        <dependency>
            <groupId>cn.dev33groupId>
            <artifactId>sa-token-jwtartifactId>
            <version>${sa-token.version}version>
        dependency>
        
         <dependency>
            <groupId>com.github.xiaoymingroupId>
            <artifactId>knife4j-spring-boot-starterartifactId>
            <version>${knife4j.version}version>
        dependency>
        
        <dependency>
            <groupId>org.apache.commonsgroupId>
            <artifactId>commons-pool2artifactId>
            <version>${commons-pool2.version}version>
        dependency>

        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>${fastjson.version}version>
        dependency>
        
         <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <version>${mybatis-plus.version}version>
        dependency>

        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>dynamic-datasource-spring-boot-starterartifactId>
            <version>${dynamic.datasource.version}version>
        dependency>

1.2 表结构

1.2.1 用户表
CREATE TABLE `sys_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL COMMENT '用户名称',
  `nickname` varchar(128) DEFAULT NULL COMMENT '昵称',
  `password` varchar(128) NOT NULL COMMENT '密码',
  `salt` varchar(32) NOT NULL COMMENT '盐',
  `logged` datetime NOT NULL COMMENT '最后登录时间',
  `deleted` int(1) NOT NULL DEFAULT '0' COMMENT '是否删除 0-否 1-是',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';
1.2.2 菜单/权限表

菜单权限表使用type字段区分-是菜单还是权限(是主菜单还是左侧菜单…等等)

CREATE TABLE `sys_menu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) NOT NULL COMMENT '父级ID',
  `title` varchar(128) NOT NULL COMMENT '文本内容',
  `url` varchar(512) DEFAULT NULL COMMENT '链接的url',
  `icon` varchar(0) DEFAULT NULL COMMENT '菜单的icon',
  `code` varchar(125) NOT NULL COMMENT '权限标识符:对于后台控制类定义。示例:user:list',
  `type` int(1) NOT NULL DEFAULT '0' COMMENT '权限类型:1- 目录 | 2 - 菜单-主菜单 | 3 - 按钮 | 5-左侧菜单',
  `ord` int(11) NOT NULL DEFAULT '0' COMMENT '菜单 排序  数值越大越靠前',
  `status` int(1) NOT NULL DEFAULT '0' COMMENT '状态:  0-正常 | 1-封禁 | 2-正常且禁止封禁',
  `deleted` 

你可能感兴趣的:(SpringBoot,java,后端,spring,boot)