拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Java权限认证还要自己手写Token?Sa-Token的3种鉴权姿势帮你省掉一半代码

Java权限认证还要自己手写TokenSa-Token的3种鉴权姿势帮你省掉一半代码【免费下载链接】Sa-Token✨ 开源、免费、一站式 Java 权限认证框架让鉴权变得简单、优雅—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名项目地址: https://gitcode.com/GitHub_Trending/sa/Sa-Token每次接新系统第一件破事就是重写登录、校验、过期那一套。Sa-Token一站式 Java 权限认证框架把登录认证、权限认证、分布式 Session、SSO 单点登录都包进去了你只管写业务鉴权它来扛。 先看清它替你把哪些活干了把它当成一个鉴权工具箱看比背 API 更直观能力分组具体能干嘛你省掉了什么登录认证会话登录、踢人下线、记住我、同端互斥手搓 Token 生成、刷新、过期的全套逻辑权限认证注解鉴权、路由拦截、角色/权限/二级认证在每个 Controller 里重复写 if 判断会话管理全端共享/单端独享 Session、多账号体系自己维护 Map 存登录态、还要怕重启丢数据分布式扩展集成 Redis、独立 Redis、分布式 Session集群环境下自己同步 Session 的脏活单点登录 SSO同域/跨域/跨 Redis 三种模式从零设计 ticket 校验、防重放、防劫持生态适配SpringBoot 2/3/4、Solon、JFinal、JWT为每个框架重写一遍适配层核心源码零第三方依赖就放在 sa-token-core想查实现直接翻源码。 3 分钟跑通你的第一个鉴权接口跟着做假设你手上已经有一个 SpringBoot 项目。第一步在 pom.xml 里挂上依赖dependency groupIdcn.dev33/groupId artifactIdsa-token-spring-boot-starter/artifactId version1.46.0/version /dependency这一步只做一件事把框架装进来装完就能用不用建任何配置文件。第二步写个登录接口。这里拿运营后台的工号登录举例而不是常见的用户名密码RestController public class AuditController { // 运营人员用工号登录 PostMapping(/audit/login) public String login(String workNo) { StpUtil.login(workNo); // 生成会话凭证自动写进 Cookie return 已登录 workNo; } // 只有登录态才放行 GetMapping(/audit/task) public String task() { return 当前操作人 StpUtil.getLoginId(); } }注意StpUtil.login(workNo)这一行——凭证生成、写入 Cookie、后续校验全是框架内部的事。第三步想给某些接口加必须登录不用手写拦截直接调一下// 在需要鉴权的接口里或全局拦截器中 StpUtil.checkLogin(); // 未登录直接抛 NotLoginException启动项目用 Postman 或浏览器先打/audit/login?workNoop_1024再打/audit/task能拿到操作人就说明链路通了。想验证没登录会怎样直接裸调/audit/task框架会替你挡下。完整可跑的样例在 sa-token-demo-springboot对着抄就行。✨ 三个真正省时间的亮点1. 多账号体系用户表和管理员表不再打架场景电商系统里user和admin两套账号id 都可能撞成 10001混用StpUtil就乱套了。做法给其中一套账号复制一个工具类换个loginTypepublic class StpUserUtil { // loginType 换成 user与 admin 的体系隔离 public static StpLogic stpLogic new StpLogic(user); }效果StpUserUtil管用户、StpUtil管管理员两套会话、两套 Token 互不干扰不用在业务代码里加前缀、减前缀。原理和更多写法见 多账号认证文档。2. 分布式 Session集群下登录态不再各玩各的场景服务部署多副本用户登录落在 A 节点下次请求打到 B 节点登录态没了。做法换掉默认的内存 DAO接入 Redis。项目里连独立 Redis权限缓存和业务缓存分开都给你留好了口子见 分布式Session文档。效果会话数据落到共享存储哪个节点接请求都认同一个登录态还省了重启丢数据的烦恼。存储选型细节可以看 integ-redis 说明。3. SSO 三种模式跨域跨 Redis 也不怕场景公司好几个子系统想让员工登录一次全通行但域名不同、Redis 也不同。做法按你的架构对号入座——同域同 Redis 走模式一共享 Cookie跨域同 Redis 走模式二URL 重定向传会话跨域跨 Redis 走模式三HTTP 校验 ticket。效果不用自己设计 ticket 校验、参数签名、防劫持那一堆安全细节框架内置了。三种模式的取舍和示例在 SSO 文档可跑通的工程在 sa-token-demo-sso。⚠️ 这几个坑我替你踩过⚠️Token 有效期别乱填 -1。默认 30 天-1是永久有效。内网工具可以长一点C 端用户建议配active-timeout活跃冻结长时间不访问自动失效更安全。⚠️多账号体系别偷懒共用 StpUtil。id 撞车是迟早的事按前面多账号那节隔离开能省掉后期大量诡异 bug。集群环境一定要把 DAO 换成 Redis默认内存 DAO 只适合单机否则登录态不共享。记住我别和长 Token 混着用。记住我是浏览器重启后免验证适合 7 天这类中短期长期有效直接用timeout配即可两者语义不一样。配置项全集在 框架配置文档。 顺手给你指几个路想快速上手sa-token-demo-first-run最小可跑工程想看鉴权全貌登录认证文档想玩单点登录sa-token-plugin/sa-token-sso 插件源码想看注解鉴权细节注解鉴权文档 下一步把 sa-token-demo-springboot 拉下来跑一遍把登录接口改成你业务里的登录方式。跑不通或有疑问直接去项目 issue 里提比闷头查快得多。【免费下载链接】Sa-Token✨ 开源、免费、一站式 Java 权限认证框架让鉴权变得简单、优雅—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名项目地址: https://gitcode.com/GitHub_Trending/sa/Sa-Token创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门