Java集成SaToken构建登录
SaToken 是一款轻量级的 Java Token 认证框架,专为 Web 应用程序设计,旨在简化前后端分离架构下的认证、授权及会话管理流程。其核心目标是通过统一的 Token 机制,解决分布式系统中的身份验证与权限控制难题,同时降低开发复杂度。
一、SaToken的核心功能
- Token 生命周期管理
生成与验证:支持自定义 Token 生成规则(如 JWT 或 UUID),并提供高效的验证机制,确保 Token 的合法性与有效性。
刷新与过期处理:允许在 Token 过期前自动刷新,延长会话有效期;同时支持灵活配置过期时间,平衡安全性与用户体验。
黑名单机制:可手动将恶意 Token 加入黑名单,防止滥用或攻击。 - 单点登录(SSO)
用户在一个子系统中登录后,无需重复认证即可访问其他关联系统,实现跨域身份共享。 - 细粒度权限控制
注解式鉴权:通过 @SaCheckRole、@SaCheckPermission 等注解,快速标记接口或类的访问权限(如角色、权限码)。
动态权限加载:支持从数据库或缓存中实时加载权限数据,适应权限频繁变更的场景。 - 分布式会话支持
集成 Redis 等缓存工具,实现 Token 状态的集中式管理,确保多节点服务间的会话一致性。 - 安全增强
Token 加密:支持对 Token 内容加密,防止中间人攻击。
防篡改设计:通过签名机制确保 Token 未被篡改,提升安全性。
二、SaToken技术优势
- 轻量级与高性能:无复杂依赖,核心代码精简,适合高并发场景。
- 开发友好:提供丰富的 API 和注解,减少样板代码,加速开发流程。
- 灵活扩展:支持自定义 Token 解析器、存储策略等,满足多样化需求。
- 生态兼容:与 Spring Boot、Quarkus 等主流框架无缝集成,降低迁移成本。
三、Java集成SaToken
1、添加依赖(Maven 示例)
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.34.0</version> <!-- 使用最新版本 -->
</dependency>
<!-- 可选:Redis 持久化支持 --><dependency><groupId>cn.dev33</groupId><artifactId>sa-token-dao-redis</artifactId><version>1.34.0</version></dependency>
2、配置文件(application.yml)
sa-token:
# Token 有效期(秒),默认30天
timeout: 2592000
# 是否自动续签
auto-renew: true
# Token 名称(前端携带的Header键)
token-name: Authorization
# 存储方式:0-内存、1-Redis、2-MongoDB
store: 1
# 拦截器配置
interceptor:
is-open: true
include-path: /** # 拦截所有路径
exclude-path: /login # 排除登录接口
3、登录接口实现
@RestController
public class LoginController {
@PostMapping("/login")
public SaResult login(String username, String password) {
// 1. 验证用户名密码(示例简化逻辑)
if ("admin".equals(username) && "123456".equals(password)) {
// 2. 执行登录(参数为用户ID)
StpUtil.login(10001);
// 3. 返回Token(前端需存储并携带)
return SaResult.ok("登录成功").set("token", StpUtil.getTokenValue());
}
return SaResult.error("登录失败");
}
}
4、权限控制注解
@RestController
@SaCheckRole("admin") // 需admin角色才能访问
public class AdminController {
@GetMapping("/admin")
public String adminPage() {
return "Admin Page";
}
}
5、拦截器全局配置
@Configuration
public class SatokenConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SaInterceptor())
.addIncludePaths("/**") // 拦截所有路径
.addExcludePaths("/login"); // 排除登录接口
}
}
6、注销功能
@RestController
public class LogoutController {
@PostMapping("/logout")
public SaResult logout() {
StpUtil.logout(); // 清除当前会话Token
return SaResult.ok("注销成功");
}
}
7、验证登录状态
// 校验是否登录
StpUtil.checkLogin();
// 获取当前登录用户ID
Long userId = StpUtil.getLoginIdAsLong();
// 判断用户是否具备角色/权限
boolean isAdmin = StpUtil.hasRole("admin");
boolean canDelete = StpUtil.hasPermission("user:delete");
8、关键注意事项
- 依赖冲突:确保SaToken版本与其他库(如Spring Security)兼容。
- Redis 配置:若使用Redis存储,需在application.yml中配置Redis连接信息。
- 跨域处理:若前端跨域访问,需配置CORS或使用@CrossOrigin注解。
- 安全加固:建议启用HTTPS,避免Token泄露;敏感接口增加二次验证。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935347.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能比较简单,也不方便个性化…
实验室装修厂家最新权威推荐榜:专业设计与施工品质深度解析
实验室装修厂家最新权威推荐榜:专业设计与施工品质深度解析在科技创新驱动发展的时代背景下,实验室作为科研创新的重要载体,其装修质量直接关系到实验结果的准确性和科研人员的安全。优秀的实验室装修不仅要满足基本…
生成式AI在红队测试中的应用:构建自动化工具
本文探讨如何利用生成式AI和大语言模型构建红队测试工具,包括自动化社交工程、代码生成和侦察等关键技术,通过实际Python代码示例展示AI在网络安全领域的实际应用。生成式AI为黑客服务:构建红队测试工具
红队测试人…
2025年UV LED点光源厂家权威推荐榜:精准固化与高效能
2025年UV LED点光源厂家权威推荐榜:精准固化与高效能随着工业4.0时代的深入发展,UV LED点光源作为精密制造领域的关键设备,正迎来技术革新与市场需求的爆发式增长。据行业数据显示,全球UV固化设备市场规模预计在20…
NVR软件快速对比表
NVR软件快速对比表
一、核心数据对比(百分制评分)软件名称
系统占用
功能丰富度
AI智能
易用性
中文支持
性价比
总评分
推荐度Agent DVR
75
98
95
92
80
98
95
⭐⭐⭐⭐⭐Surveillance Station
70
95
85
95
100
60
…
20232410 2025-2026-1 《网络与系统攻防技术》 实验一实验报告
一、实验目的
本次实践的对象是一个名为pwn1的linux可执行文件。
该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正…
在Windows系统打造基于ConEmu的命令行工具环境
需求背景
对于git工具的使用,个人习惯了通过命令行进行操作。特别是当需要管理多个项目时,希望命令行工具支持多标签页方式便于切换,并且具备保存历史标签页的功能。
上述诉求在Linux/Mac系统下都比较好实现,但是在…
2025工矿灯厂家最新权威推荐榜:工业照明技术革新与品质保障
2025工矿灯厂家最新权威推荐榜:工业照明技术革新与品质保障在工业4.0和智能制造快速推进的背景下,工矿照明领域正经历着深刻的技术变革。现代工矿灯不仅需要满足基础照明需求,更要兼顾能效管理、智能控制和环境适应…
2025广东粉末厂家最新权威推荐榜:技术实力与市场口碑深度解
2025广东粉末厂家最新权威推荐榜:技术实力与市场口碑深度解析在制造业转型升级的浪潮中,广东作为中国制造业的重要基地,粉末材料行业迎来了前所未有的发展机遇。粉末材料作为现代制造业的基础原料,其质量直接关系到…
[KaibaMath]1007 关于数列极限存在的唯一性证明
[KaibaMath]1007 关于数列极限存在的唯一性证明基于∀ε>0,常数λ>0,|a-b|<λε => a=b和绝对值的三角形不等式|a-b|<=|a|+|b|,我们可证明数列极限存在的唯一性定理。|a-b|<λε => a=b的证明…
20232418 2025-2026-1 《网络与系统攻防技术》实验一实验报告
一、实验目的1掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码。2掌握反汇编与十六进制编程器。3能正确修改机器指令改变程序执行流程。4能正确构造payload进行bof攻击。
二、实验环境
VMware Workstation pro环境下安装k…
2025年成都软件开发机构最新推荐排行榜,涵CRM,物联网,运维,仓储,人力多系统,技术实力与市场口碑深度解析
在数字化转型加速推进的当下,成都地区政企机构对专业化软件开发服务的需求持续攀升,但市场乱象却让选型陷入困境。部分厂商技术架构陈旧,难以适配业务快速迭代;有些服务商重开发轻售后,故障响应滞后,造成隐性损失…
2025硅藻土定制厂家权威推荐榜:专业生产与深度定制实力解析
2025硅藻土定制厂家权威推荐榜:专业生产与深度定制实力解析在环保材料行业快速发展的当下,硅藻土凭借其优异的吸附性能、环保特性以及广泛的应用领域,已成为工业过滤、建筑材料、环保净化等多个行业不可或缺的功能性…
汉文博士 0.7 版:支持统一码 17.0,新增字体分析器,优化词典编译器
自去年10月份发布汉文博士 0.6.4 版后,汉文博士经过近一年的开发,今天发布了新的 0.7 版。其主要新增功能如下。
强化的构形检索
新版支持使用构形检索统一码 17.0 新增的“中日韩表意文字扩展J区”4298 个汉字。构形…
2025燃气采暖锅炉厂家权威推荐榜:高效节能与品质保障口碑之
2025燃气采暖锅炉厂家权威推荐榜:高效节能与品质保障口碑之选在能源转型与绿色发展的时代背景下,燃气采暖锅炉作为建筑供暖系统的核心设备,其技术革新与品质提升已成为行业关注的焦点。随着国家“双碳”目标的深入推…
【python】python进阶——Redis模块 - 教程
【python】python进阶——Redis模块 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…