Skip to the content.

spring-security-rbac

安装运行

1.在自己项目中导入坐标

<dependency>
  <groupId>io.github.churunfa</groupId>
  <artifactId>spring-boot-security-rbac-starter</artifactId>
  <version>1.0.0-RELEASE</version>
</dependency>

2.配置redis、mysql、导入spring-boot-starter-web

3.运行sql文件(public/rbac.sql),创建rbac基础数据表

4.启动项目访问http://localhost:8080/rbac

使用

一、角色

  1. root角色:拥有所有权限,任何情况下不会拦截
  2. ANONYMOUS:匿名角色,描述不需要拦截的资源,所有用户均拥有该角色。其中anonymousUser只允许拥有该角色,anonymousUser表示未登陆的用户

二、权限配置

1.精准匹配模式:

例:/test/accurate

2.通配符匹配模式:

*可匹配一层目录,**可以匹配任意层目录

例: /test/wildcard/* 可以匹配/test/wildcard/a/test/wildcard/b,但是/test/wildcard/a/b则会匹配失败

/test/wildcard/** 可以匹配所有以/test/wildcard/开头的url

3.动态匹配模式:

可以根据当前登陆用户的某些信息进行匹配

例如:/test/user/{id},假设当前登陆用户为非root用户,并且id为5,则该用户拥有访问/test/user/5的权限

通配符使用范围:

数据库用户表的映射类中所有的属性都可以作为通配符使用

4.参数匹配模式:

根据参数匹配,其中参数可以是在url中,也可以是表单提交,也可以在json中提交

例:/test/param/{id}?a&b=1&c={id}表示参数必须包含a,并且b的值必须等于1,并且c的值必须等于用户id的请求才拥有权限

5.请求方式匹配模式:

可以在权限中添加请求前缀进行匹配

支持GETPOSTPUTDELETE,必须大写

例:POST:/test/method/{id}

三、参数配置

security-rbac:
  uri-prefix:  # 需要进行权限控制的url前缀,例如: /api 表示只对api开头的url进行权限认证,默认为空,即对所有权限都进行验证
  rbac-user-class-str: # 用户表全包名,当需要自定义用户表时,将自定义用户表继承RbacUser并配置该属性
  auth-whitelist: # 认证白名单,该列表中配置的项直接放行
  auto-create-root-account: # true或false,表示项目启动时是否自动创建root用户、匿名用户等权限相关信息,默认true
  token-expiration: # 配置用户认证默认过期时间
  user-table-name: # 数据库中用户表的表名,默认为user