使用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.0</sa-token.version>
        <commons-pool2.version>2.7.0</commons-pool2.version>
        <fastjson.version>1.2.56</fastjson.version>
        <knife4j.version>3.0.3</knife4j.version>
        <dynamic.datasource.version>3.0.0</dynamic.datasource.version>
        <mybatis-plus.version>3.5.0</mybatis-plus.version>
    </properties>
    
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-spring-boot-starter</artifactId>
            <version>${sa-token.version}</version>
        </dependency>
        <!--集成redis-->
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-dao-redis</artifactId>
            <version>${sa-token.version}</version>
        </dependency>
       <!-- 集成jwt--> 
        <dependency>
            <groupId>cn.dev33</groupId>
            <artifactId>sa-token-jwt</artifactId>
            <version>${sa-token.version}</version>
        </dependency>
        
         <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>${commons-pool2.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        
         <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>

        <!--多数据源-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <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` 
  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值