Sa-Token 整合Java17和SpringBoot

news2024/11/20 11:23:37

目录

    • 前言
    • 引入项目
    • 开启登录认证
    • 路由拦截鉴权
    • 解决兼容问题
    • 总结

前言

之前无意中发现Sa-Token权限认证框架,项目十分好用。

  • 项目地址: https://github.com/dromara/sa-token
  • 官网地址: https://sa-token.cc/doc.html#/start/example

我的个人项目使用的是Kotlin+JDK17+SpringBoo3t , 于是我也想在这个项目中使用, 可是发现有很多的问题, 无法兼容17的jdk版本,主要原因是17版本都javax.servlet相关的包都更名成jakarta.servlet了, 于是进行了适当的改造。

这个框架也提供了支持SpringBoot3的版本, 现在可以直接使用了。

我的个人项目地址: https://github.com/blanexie/vxph
本次修改的类路径: com.github.blanexie.vxph.common.satoken

感兴趣的可以直接看源码。

引入项目

官网的相关示例如下:
https://sa-token.cc/doc.html#/start/example
在这里插入图片描述
很简单,引入包配置好文件就可以了。 这个

开启登录认证

官网的描述很详细, 我就简单贴下图
https://sa-token.cc/doc.html#/use/login-auth
在这里插入图片描述

路由拦截鉴权

当然也支持接口注解鉴权, 但是路由鉴权更灵活, 可以自定义鉴权逻辑, 我后期是想把接口和相关权限角色信息全部写入数据库中, 然后自定义鉴权逻辑,访问数据库表来实现权限拦截。 这样可以方便的通过修改表记录就能配置相关权限信息, 比硬编码注解到代码中要灵活

https://sa-token.cc/doc.html#/use/route-check
在这里插入图片描述

解决兼容问题

按照上面的配置完成后,启动项目都是没有报错没有问题的, 可是无论怎样弄就是不生效, 不会进行权限拦截。 于是我去看了下引入的jar包和对应的源码。

  1. 我在项目中引入的是: implementation("cn.dev33:sa-token-spring-boot-starter:1.37.0")
  2. 然后这个包间接引入了三个包 在这里插入图片描述
  3. 可以看到其中cn.dev33:sa-token-spring-boot-startercn.dev33:sa-token-spring-boot-autoconfig 明显是和SpringBoot集成相关的。 于是打开两个包查看源码。
  4. 发现 cn.dev33:sa-token-spring-boot-starter 是和javax.servlet 相关的, 并且其中的类比较少和简单。 于是我把其中的类全部复制到我的项目的com.github.blanexie.vxph.common.satoken包路径中,并且把其中的javax.servlet 包名全部换成jakarta.servlet包名。
  5. 要注意官方包是通过spring.factories文件的方式把SaTokenContextRegister类引入到Spring的容器中来完成集成的。 因此复制了后,需要我们手动把这个类加入到容器中, 很简单直接在这个类上面加上@Configuration注解
    在这里插入图片描述
  6. 删除 cn.dev33:sa-token-spring-boot-starter 包的引入, 注意SaToken的其他核心包是通过这个包间接引入的,所以我们还需要手动引入其他包。 在这里插入图片描述
  7. 至此整个整合动作完成,启动项目,访问相关接口, 生效OK
    在这里插入图片描述
    在这里插入图片描述

总结

Java21已经发布了, 并且包含激动人心的虚拟线程功能, 要跟上时代的脚步。

本文章解决的问题就是 Java17相关包名称修改导致的问题, 需要的了解相关SpringBootstarter模块的知识。 需要了解Gradle/Maven包依赖引入的关系知识等。

其实只要知道根本底层原理,很多问题都有解决方案的。

下篇文章讲解如何设计权限角色表, 并且配合SaToken来实现权限控制的动态改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1225573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

64位ATT汇编语言使用bss段.skip指令储存字符,并使用系统调用输出字符

.global main .section .data .section .bss# 需要输出的字符数组,还没有初始化mystring: .skip 4 .section .text main:# 将mystring这个字符串的地址存入到rbx寄存器中leaq mystring,%rbx# 将a放入到mystring第一个字节里边movb $a,(%rbx)# 将地址往后边移动一个字…

C语言的由来与发展历程

C语言的起源可以追溯到上世纪70年代,由Dennis Ritchie在贝尔实验室开发出来。C语言的设计目标是提供一种简洁、高效、可移植的编程语言,以便于开发底层的系统软件。在那个时代,计算机技术正在迅速发展,出现了多种高级编程语言&…

Python接口自动化测试之token参数关联!

前言 在做自动化接口测试时,有时候会遇到token的动态关联,例如查询余额接口,需要关联登录接口的token动态值,如何利用python脚本进行接口token关联呢?今天我们爱学习一下吧! 一:获取登录接口返回的token…

掌握深度学习利器——TensorFlow 2.x实战应用与进阶

掌握深度学习利器——TensorFlow 2.x实战应用与进阶 摘要:随着人工智能技术的飞速发展,深度学习已成为当下最热门的领域之一。作为深度学习领域的重要工具,TensorFlow 2.x 备受关注。本文将通过介绍TensorFlow 2.x的基本概念和特性&#xff…

面向未来的自动化:拥抱机器人即服务(RaaS)

01. RaaS是什么? 对于希望实现业务流程自动化的公司来说,机器人通常是一笔巨大的资本支出。由于机器人非常昂贵,公司可能需要等待数年才能看到投资回报。正是由于这一现实,许多较小的组织无法投资机器人。 但一些机器人公司正在采…

2023.11.18 每日一题(AI自生成应用)【C++】【Python】【Java】【Go】 动态路径分析

目录 一、编程挑战:动态时间序列分析 实际应用: 实现提示: 二、实现 1. C 2. Python 3. JAVA 4. Go 一、编程挑战:动态时间序列分析 问题描述: 假设你是一名软件工程师,需要开发一个应用来分析和预…

springboot项目中获取业务功能的导入数据模板文件

场景: 在实际业务场景中,经常会遇到某些管理功能需要数据导入共功能,但既然是导入数据,肯定会有规则限制,有规则就会有数据模板,但这个模板一般是让客户自己下载固定规则模板,而不是让客户自己随便上传模板。下面介绍直接下载模板 一、下载模板示例 1、在项目的…

最短路问题

单源最短路 Dijkstra算法 力扣 743.网络延迟时间 const int N 7777; int INF 0x3f3f3f3f; class Solution {struct edge {int v, w;};vector<edge> e[N];int d[N], vis[N]; //d数组存储最短路径长度priority_queue <pair<int, int>, vector<pair<int…

栈的实现及OJ练习(c语言)

目录 前言 栈 栈的实现&#xff08;数组栈&#xff09; 初始化栈 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空 销毁栈 最终代码&#xff1a; 选择练习 栈的OJ题 前言 我们在之前已经学习了顺序表和链表的概念&#xff0c;它们有这样的优缺点&a…

周年纪念篇

一周年纪念&#xff01; 凌晨逛手机版csdn时才突然发现已经错过一周年了&#xff0c;但我当闰年来纪念一下不过分吧hhh 浅浅的整些怀念的东西吧&#xff01; 这是人生第一段代码&#xff1a;不是hello world写不起&#xff0c;而是纯爱单推人更有性价比。 有这段代码在&#x…

Zabbix Proxy分布式监控

目录 Zabbix Proxy简介 实验环境 proxy端配置 1.安装仓库 2.安装zabbix-proxy 3.创建初始数据库 4.导入初始架构和数据&#xff0c;系统将提示您输入新创建的密码 5.编辑配置文件 /etc/zabbix/zabbix_proxy.conf&#xff0c;配置完成后要重启。 agent客户端配置 zabbix…

可燃气体监测仪|燃气管网监测解决办法

可燃气体监测仪是城市生命线中&#xff0c;燃气监测运行系统的前端监测设备&#xff0c;其主要作用是对燃气管网的安全状况进行实时监测。燃气管道在使用过程中&#xff0c;由于老化、裂纹、锈蚀等问题&#xff0c;容易导致燃气出现泄漏问题&#xff0c;从而引发一系列的安全事…

强烈 推荐 13 个 Web前端在线代码IDE

codesandbox.io&#xff08;国外&#xff0c;提供免费空间&#xff09; 网址&#xff1a;https://codesandbox.io/ CodeSandbox 专注于构建完整的 Web 应用程序&#xff0c;支持多种流行的前端框架和库&#xff0c;例如 React、Vue 和 Angular。它提供了一系列增强的功能&…

GSVA,GSEA,KEGG,GO学习

目录 GSVA 1&#xff1a;获取注释基因集 2&#xff1a;运行 GSEA 1,示例数据集 2,运行 GSEA_KEGG富集分析 GSEA_GO富集分析 DO数据库GSEA MSigDB数据库选取GSEA KEGG 1&#xff1a;运行 2&#xff1a;绘图 bar图 气泡图 绘图美化 GO GSVA 1&#xff1a;获取注…

springboot实现在线人数统计

在线人数统计 笔者做了一个网站&#xff0c;需要统计在线人数。 在线有两种&#xff1a; 一、如果是后台系统如果登录算在线&#xff0c;退出的时候或者cookie、token失效的时候就算下线 二、如果是网站前台&#xff0c;访问的时候就算在线 今天我们来讲一下第2种情况&…

【论文解读】FFHQ-UV:用于3D面部重建的归一化面部UV纹理数据集

【论文解读】FFHQ-UV 论文地址&#xff1a;https://arxiv.org/pdf/2211.13874.pdf 0. 摘要 我们提出了一个大规模的面部UV纹理数据集&#xff0c;其中包含超过50,000张高质量的纹理UV贴图&#xff0c;这些贴图具有均匀的照明、中性的表情和清洁的面部区域&#xff0c;这些都是…

损失函数(Loss Function)与代价函数(Cost Function)、目标函数(Objective Function)区别

损失函数定义在单个样本上&#xff0c;算的是一个样本的误差。 代价函数定义在整个训练集上&#xff0c;是所有样本误差的平均&#xff0c;也就是损失函数的平均。 目标函数定义为最终需要优化的函数&#xff0c;等于经验风险 结构风险&#xff08;也就是Cost Function 正则化…

Windows10下Mysql8.0安装教程

文章目录 1.下载Mysql8.02.解压Mysql安装包到指定目录3.初始化Mysql服务4.安装Mysql服务5.启动Mysql服务6.登录Mysql服务7.修改Mysql密码8.重启Mysql服务停止服务启动服务 1.下载Mysql8.0 链接&#xff1a;https://pan.baidu.com/s/1uP2xZj8g05xg-oHX_nfnmA 提取码&#xff1a;…

基于SSM的在线投稿系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

PC端使子组件的弹框关闭

子组件 <template><el-dialog title"新增部门" :visible"showDialog" close"close"> </el-dialog> </template> <script> export default {props: {showDialog: {type: Boolean,default: false,},},data() {retu…