# katool-security **Repository Path**: manong99898/katool-security ## Basic Information - **Project Name**: katool-security - **Description**: KaTool Security鉴权框架是KaTool提供的权限管理工具,基于Spring Boot和Dubbo实现,可以针对SpringCloudGateWay和Zuul等流行网关框架进行自定义鉴权逻辑适配,使开发者更注重逻辑开发,而不被项目架构所影响,使用TokenUtil也能够快速进行框架转换而不用改编原本的代码逻辑。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://security.katool.cn/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 14 - **Created**: 2024-02-03 - **Last Updated**: 2024-02-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # KaTool Security鉴权框架文档 ![template](http://gd.7n.cdn.wzl1.top/typora/img/template.png) ![SpringBoot-2.7.0](https://img.shields.io/badge/SpringBoot-2.7.2-green)![SpringCloudGateWay-2.7.0](https://img.shields.io/badge/SpringCloudGateWay-2.2.10.RELEASE-orange)![SpringCloudZuul-2.7.0](https://img.shields.io/badge/SpringCloudZuul-2.2.10.RELEASE-orange)![KaTool-1.9.5.GAMA](https://img.shields.io/badge/KaTool-1.9.5.GAMA-blue) - 官网:[KaTool-Security](https://security.katool.cn/) - GetStart:[KaTool Security鉴权框架文档 | KaTool-Security](https://doc.security.katool.cn/) ## 1. 简介 KaTool Security鉴权框架是KaTool提供的权限管理工具,基于Spring Boot和Dubbo实现,可以针对SpringCloudGateWay和Zuul等流行网关框架进行自定义鉴权逻辑适配,使开发者更注重逻辑开发,而不被项目架构所影响,使用TokenUtil也能够快速进行框架转换而不用改编原本的代码逻辑。 ## 2. 模块简介 ### 2.1 主要模块 - katool-security-starter-parent 主工程父模块 - katool-security-core 核心模块 - katool-security-interceptor AOP注解拦截器 - katool-security-spring-boot-starter 给外部项目引用的Starter包 - katool-security-interface 微服务模式 - Dubbo远程调用Interface层 - katool-security-auth 微服务模式 - 鉴权中心服务 - katool-security-gateway-starter-parent 微服务 - 网关层面鉴权starter父模块 - katool-security-gateway-core - katool-security-gateway-spring-cloud-gateway-starter Spring Cloud GateWay 网关鉴权Starter - katool-security-gateway-zuul-starter Zuul 网关鉴权Starter ```markdown └─katool-security-starter-parent └─katool-security-auth # 微服务鉴权中心服务 │ └─src/main/java │ └─cn.katool.security │ └─auth │ ├─aop # 日志记录切面 │ ├─controller # 鉴权服务控制器 │ ├─exception # 异常处理 │ ├─job # 定时任务 - 每10分钟自动关闭所有接口鉴权 │ ├─mapper # MyBatisPlus-Mapper层 │ ├─model # Auth实体类、KaSecurityUser实体类 │ ├─service # AuthController对应的service层,以及KaSecurityUser │ └─utils # 用到的一些工具类 ├─katool-security-core │ └─src/main/java │ └─cn.katool.security │ └─common │ ├─annotation # 鉴权注解(@AuthCheck) │ ├─constant # 常量 │ ├─logic # 微服务鉴权处理逻辑层 │ ├─model │ │ ├─dto/auth │ │ ├─entity │ │ └─vo │ └─utils # JSON转换工具 ├─katool-security-gateway-starter-parent # 微服务 - 网关层面鉴权starter父模块 │ ├─katool-security-gateway-core # 统一接口(用于获取Token,但是Request由于不同框架实现不同,各自自行实现Request上下文获取) │ │ └─src/main/java │ │ └─cn.katool.security.gateway │ │ └─service │ ├─katool-security-gateway-spring-cloud-gateway-starter # Spring Cloud GateWay Starter │ │ └─src/main/java │ │ └─cn.katool.security.starter │ │ ├─gateway │ │ └─utils │ └─katool-security-gateway-zuul-starter # Zuul Stater ├─katool-security-interceptor │ └─src/main/java │ └─cn.katool.security │ └─interceptor # AOP鉴权拦截切面逻辑 ├─katool-security-interface │ └─src/main/java │ └─cn.katool.security │ └─service # Dubbo 远程调用接口 └─katool-security-spring-boot-starter # 单体项目引入的Starter └─src/main/java └─cn.katool.security └─starter ``` ### 2.2 其他模块 - katool-security-demo 一些使用样例 - katool-security-boot-simple-demo 在单体项目下的使用样例 - katool-security-gateway-simple-demo 微服务模式,在SpringCloudGateWay作为网关的前提下的使用样例 - katool-security-zuul-simple-demo 微服务模式,在Zuul作为网关的前提下的使用样例 ```markdown └─katool-security-demo ├─katool-security-boot-simple-demo ├─katool-security-gateway-simple-demo └─katool-security-zuul-simple-demo ``` ## 3. 鉴权逻辑实现 ### 3.1 实现KaSecurityAuthLogic接口继承工具类 ```java @Component public class AuthConfig extends KaSecurityAuthUtil<需要鉴权的类型> implements KaSecurityAuthLogic{ @Override public KaSecurityValidMessage doCheckLogin(Boolean onlyCheckLogin) { return KaSecurityValidMessage.unKnow(); } @Override public KaSecurityValidMessage doAuth(List roleList) { // 这里可以根据角色列表进行鉴权,返回鉴权失败或者鉴权成功的消息 System.out.println("进入鉴权,roleList:" + roleList); return KaSecurityValidMessage.success(); } @Bean private void initAuth(){ // 加入鉴权 KaToolSecurityAuthQueue.add(this); } } ``` ### 3.2 将MySecurityAuthLogic加入鉴权执行队列 定义一个Bean,执行语句就可以了,你也可以使用自动装配,在这里由于使@Bean,并且MySecurityAuthLogic被@Component标记,所以会自动对MySecurityAuthLogic的成员属性进行自动装配 ```java public class BeanClass{ @Bean void run(List routeList){ KaToolSecurityAuthQueue.add(new MySecurityAuthLogic()); } } ``` ## 4. 贡献提交规范 先将代码fork到自己的仓库,新建一个分支,代码编写好之后,请自行测试并配上测试截图到根目录下的`test.md`文件 test.md格式: ```markdown # 新增/修复 贡献名称 # 你的个人简介(如果进入被参考,那么我们会将您计入到官网的贡献者中) - 头像: - Name: - 简介/签名: - 其他(包括但不限于邮箱/联系方式/博客/github/gitee): # 简介: ..... # 测试结果: ..... # 使用教程: ..... ``` KaTool-SpringBootTest测试框架github地址:https://github.com/Karosown/KaToolTest.git ## 5. Git/Issues提交规范 ### 5.1 什么是Git提交规范 Git是目前最流行的分布式版本控制系统,它能够帮助开发者高效管理项目代码。在进行Git操作时,我们需要对代码进行提交,以记录下每一次修改的内容。而Git提交规范则是指在代码提交时,根据一定的格式要求进行提交信息的书写,并在注释中尽可能详细地记录修改的内容,以方便其他人查看。 ### 5.2 Git提交规范的重要性 1. 提高协作效率:当多人协同开发时,不规范的提交信息很容易让别人无法理解代码的变更,从而延误项目进度。 2. 方便代码审查:优秀的提交注释能够帮助代码审核人员快速了解修改的内容,减轻审核负担。 3. 方便代码回退:在需要回退代码到某一个具体版本时,合理规范的Git提交信息能够方便地找到对应的版本,并快速恢复代码。 4. 维护项目历史记录:清晰明了的提交注释可以记录项目开发的历程,方便后期的维护和追溯。 ### 5.3 Git提交规范的要求 Git提交规范通常包括以下信息: 1. 标题(必填):一句话简述本次提交的内容。 2. 空行:用于分隔标题和正文。 3. 正文(选填):详细阐述本次提交的内容,可以包括具体修改的文件、代码功能、修复了哪些bug等。 4. 空行:用于分隔正文和注释。 5. 注释(选填):对本次提交补充说明的信息,可以包括相关链接、参考文献等。 Git提交规范要求的格式通常如下: ``` ():