# lucy-rbac **Repository Path**: lboot/lucy-rbac ## Basic Information - **Project Name**: lucy-rbac - **Description**: 基于SaToken的RBAC鉴权管理方案,支持细粒度权限管理 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-16 - **Last Updated**: 2024-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > 依赖关系 | lucy-rbac | lucy-spring-boot-starter | | --------- | ------------------------ | | 1.0.0 | 1.0.0+ | ## 介绍 `lucy-rbac`是基于`sa-token`鉴权服务框架对`starter`中鉴权服务的服务实现,是权限管理系统的解决方案之一,支持部门、角色、用户、岗位等管理,提供了丰富的API文档。提供了丰富的接口,用户可以基于此进行拓展。 ## 准备 在引入任何 `Lucy`系列依赖之前,需要完成`jitpack`镜像仓库的配置。 ```xml jitpack.io https://www.jitpack.io ``` ## 引入 根据依赖关系,决定引入版本号。 ```xml com.gitee.kindear lucy-spring-boot-starter ${version} com.gitee.kindear lucy-rbac ${version} ``` ## 配置 > 启动类 启用 `knife4j` 文档,需要在启动类上配置 `@EnableKnife4j` ```java @EnableKnife4j @EnableJpaAuditing @EnableAsync @EnableCaching @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(LucyAdminApplication.class, args); } } ``` > 鉴权框架 `lucy-rbac`提供了默认的配置方案,可以不进行配置,如果需要进行配置,请参阅[文档](https://sa-token.cc/doc.html#/use/config) **推荐使用配置类完成配置** ``` java /** * Sa-Token 配置类 */ @Configuration public class SaTokenConfigure { // Sa-Token 参数配置,参考文档:https://sa-token.cc // 此配置会覆盖 application.yml 中的配置 @Bean @Primary public SaTokenConfig getSaTokenConfigPrimary() { SaTokenConfig config = new SaTokenConfig(); config.setTokenName("satoken"); // token名称 (同时也是cookie名称) config.setTimeout(30 * 24 * 60 * 60); // token有效期,单位s 默认30天 config.setActivityTimeout(-1); // token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 config.setIsConcurrent(true); // 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) config.setIsShare(true); // 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) config.setTokenStyle("uuid"); // token风格 config.setIsLog(false); // 是否输出操作日志 return config; } } ``` ``` java /** * Sa-Token 配置类 */ @Configuration public class SaTokenConfigure { // Sa-Token 参数配置,参考文档:https://sa-token.cc // 此配置会与 application.yml 中的配置合并 (代码配置优先) @Autowired public void configSaToken(SaTokenConfig config) { config.setTokenName("satoken"); // token名称 (同时也是cookie名称) config.setTimeout(30 * 24 * 60 * 60); // token有效期,单位s 默认30天 config.setActivityTimeout(-1); // token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 config.setIsConcurrent(true); // 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) config.setIsShare(true); // 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) config.setTokenStyle("uuid"); // token风格 config.setIsLog(false); // 是否输出操作日志 } } ``` 两者的区别在于: - 模式 1 会覆盖 application.yml 中的配置。 - 模式 2 会与 application.yml 中的配置合并(代码配置优先)。 ------- | 参数名称 | 类型 | 默认值 | 说明 | | ---------------------- | ------- | -------------------- | ------------------------------------------------------------ | | tokenName | String | satoken | Token 名称 (同时也是 Cookie 名称、数据持久化前缀) | | timeout | long | 2592000 | Token 有效期,单位/秒 默认30天,-1代表永久有效 [参考:token有效期详解](https://sa-token.cc/doc.html#/fun/token-timeout) | | activityTimeout | long | -1 | Token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒, 默认-1 代表不限制 (例如可以设置为1800代表30分钟内无操作就过期) [参考:token有效期详解](https://sa-token.cc/doc.html#/fun/token-timeout) | | isConcurrent | Boolean | true | 是否允许同一账号并发登录 (为 true 时允许一起登录,为 false 时新登录挤掉旧登录) | | isShare | Boolean | true | 在多人登录同一账号时,是否共用一个token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token) | | maxLoginCount | int | 12 | 同一账号最大登录数量,-1代表不限 (只有在 `isConcurrent=true`, `isShare=false` 时此配置才有效),[详解](https://sa-token.cc/doc.html#/use/config?id=配置项详解:maxlogincount) | | isReadBody | Boolean | true | 是否尝试从 请求体 里读取 Token | | isReadHeader | Boolean | true | 是否尝试从 header 里读取 Token | | isReadCookie | Boolean | true | 是否尝试从 cookie 里读取 Token,此值为 false 后,`StpUtil.login(id)` 登录时也不会再往前端注入Cookie | | isWriteHeader | Boolean | false | 是否在登录后将 Token 写入到响应头 | | tokenStyle | String | uuid | token风格, [参考:自定义Token风格](https://sa-token.cc/doc.html#/up/token-style) | | dataRefreshPeriod | int | 30 | 默认数据持久组件实现类中,每次清理过期数据间隔的时间 (单位: 秒) ,默认值30秒,设置为-1代表不启动定时清理 | | tokenSessionCheckLogin | Boolean | true | 获取 `Token-Session` 时是否必须登录 (如果配置为true,会在每次获取 `Token-Session` 时校验是否登录),[详解](https://sa-token.cc/doc.html#/use/config?id=配置项详解:tokensessionchecklogin) | | autoRenew | Boolean | true | 是否打开自动续签 (如果此值为true, 框架会在每次直接或间接调用 `getLoginId()` 时进行一次过期检查与续签操作),[参考:token有效期详解](https://sa-token.cc/doc.html#/fun/token-timeout) | | tokenPrefix | String | null | token前缀,例如填写 `Bearer` 实际传参 `satoken: Bearer xxxx-xxxx-xxxx-xxxx` [参考:自定义Token前缀](https://sa-token.cc/doc.html#/up/token-prefix) | | isPrint | Boolean | true | 是否在初始化配置时打印版本字符画 | | isLog | Boolean | false | 是否打印操作日志 | | jwtSecretKey | String | null | jwt秘钥 (只有集成 `sa-token-temp-jwt` 模块时此参数才会生效),[参考:和 jwt 集成](https://sa-token.cc/doc.html#/plugin/jwt-extend) | | sameTokenTimeout | long | 86400 | Same-Token的有效期 (单位: 秒),[参考:内部服务外网隔离](https://sa-token.cc/doc.html#/micro/same-token) | | basic | String | "" | Http Basic 认证的账号和密码 [参考:Http Basic 认证](https://sa-token.cc/doc.html#/up/basic-auth) | | currDomain | String | null | 配置当前项目的网络访问地址 | | checkSameToken | Boolean | false | 是否校验Same-Token(部分rpc插件有效) | | cookie | Object | new SaCookieConfig() | Cookie配置对象 | Cookie相关配置: | 参数名称 | 类型 | 默认值 | 说明 | | -------- | ------- | ------ | ------------------------------------------------------------ | | domain | String | null | 作用域(写入Cookie时显式指定的作用域, 常用于单点登录二级域名共享Cookie的场景) | | path | String | / | 路径,默认写在域名根路径下 | | secure | Boolean | false | 是否只在 https 协议下有效 | | httpOnly | Boolean | false | 是否禁止 js 操作 Cookie | | sameSite | String | Lax | 第三方限制级别(Strict=完全禁止,Lax=部分允许,None=不限制) |