ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

从登录到单点登录:Sa-Token Java 权限认证框架新手上路指南

从登录到单点登录:Sa-Token Java 权限认证框架新手上路指南 从登录到单点登录Sa-Token Java 权限认证框架新手上路指南【免费下载链接】Sa-Token✨ 开源、免费、一站式 Java 权限认证框架让鉴权变得简单、优雅—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名项目地址: https://gitcode.com/GitHub_Trending/sa/Sa-Token先别急着学 API你被鉴权坑过的三个瞬间做过 Web 项目的人大概都经历过这三种日常鉴权逻辑散落在各个 ControllerA 接口里手写了一段没登录就 401B 接口又手写了一遍改一处漏三处一个公司 N 个子系统商城、后台、客服端各登录各的用户一天要输八次密码上完集群就出事用户在节点一登录成功下一个请求落到节点二系统判定未登录会话直接对不上。Sa-Token 就是冲着这些场景来的它是一个开源、免费的轻量级 Java 权限认证框架覆盖登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0、JWT 集成、API Key 与参数签名核心包零第三方依赖JDK 8 起就能用。这篇文章不按功能清单讲而是按一条真实的上手路线走先跑通登录 → 再守住接口 → 让会话跨服务共享 → 最后打通多系统。每一步都是前一步的地基。引入依赖一行代码跑通第一次登录本地跑起来最快的方式是把仓库拉下来直接跑示例# 学习测试请拉取 master 分支 git clone https://gitcode.com/GitHub_Trending/sa/Sa-Token在自己的项目里SpringBoot 场景只需在 pom.xml 加一个依赖当前版本 1.46.0SpringBoot 2/3/4、Solon、JFinal 都有现成集成包!-- Sa-Token 权限认证SpringBoot 集成 -- dependency groupIdcn.dev33/groupId artifactIdsa-token-spring-boot-starter/artifactId version1.46.0/version /dependency登录本身只有一行参数填账号 id// 会话登录框架自动生成 token 凭证与 Session StpUtil.login(10001);别看代码短这一句背后框架干了七件事生成 token 和 Session、记录活跃时间、检查并发登录数是否超限、通知全局侦听器、把 token 写回 Cookie 给前端……你只需要记得结论登录后客户端拿到了一枚身份凭证之后每次请求带着它框架就知道这是谁。顺带两个高频配置同一个账号想限制并发登录数比如只允许一台设备在线在配置文件里设sa-token.max-login-count: 1即可想要七天内免登录登录时传过期参数就行。守住接口注解一行与路由拦截两种姿势登录跑通后下一个问题怎么保证没登录的人进不来、没权限的人做不了Sa-Token 给了两种粒度按场景挑场景做法一句话说明单个接口要求登录SaCheckLogin注解未登录直接抛NotLoginException单个接口校验具体权限SaCheckPermission(user:add)只有持有该权限的会话才放行按模块批量拦截SaRouter.match(...)路由拦截适配 restful 风格一套拦截器管所有路由注解的用法直观到不用多说// 只有具备 user:add 权限的会话才能进入 SaCheckPermission(user:add) public String addUser() { ... }路由拦截则适合按模块划权限的项目/user/**校验 user 权限、/admin/**校验 admin 权限一段配置全部收口鉴权逻辑从此和业务代码彻底分开。更细节的参数见 注解鉴权 与 路由拦截。会话跨服务共享接上 Redis节点随便落单体应用里 Session 存在内存里一切安好。一旦服务扩成多节点问题就来了用户在节点一登录会话只存在节点一的内存里下一个请求被负载均衡到节点二节点二查无此人直接按未登录处理。主流解法有四类Session 同步开销大、Session 粘滞要在网关层做、会话上 Redis节点变无状态、无状态 JWT数据写进令牌自身。Sa-Token 的推荐路线很清晰集成 Redis引入sa-token-redis-template依赖会话数据统一落到 Redis所有节点读同一份数据重启也不丢。这是微服务分布式 Session 章节的首选方案集成 JWT适合想彻底去掉服务端存储的场景代价是复杂业务下功能受限。如果是微服务架构还有一步是网关统一鉴权认证在网关一次做完用户身份随请求头传给下游服务下游只管做细粒度权限检查避免每个服务重复实现登录校验。具体怎么接 Gateway见 网关统一鉴权。打通多系统单点登录三种模式按你的架构对号入座会话共享解决了一个系统多节点的问题但公司里往往有 N 个系统商城、后台、客服端。用户每换一个系统就登录一次体验是灾难。单点登录SSO的答案是在互相信任的多个系统中用户只登录一次其余系统全部畅通。Sa-Token 的 SSO 按架构由简到难分三种模式选型其实只看两个问题——前端是否同域、后端是否同 Redis你的架构模式会话怎么传播前端同域 后端同 Redis模式一共享 Cookie 同步会话前端不同域 后端同 Redis模式二URL 重定向传播会话前端不同域 后端不同 Redis模式三HTTP 请求获取会话托底方案判断不了就先看 SSO 架构选型非 Sa-Token 甚至非 Java 项目也能通过 NoSdk 模式对接文档和接口都备好了SSO 无 SDK 接入。三种模式都有可直接运行的示例工程登录流程照一遍就懂sso1 示例、sso2 示例、sso3 示例。SSO 和 OAuth2.0 到底选谁一句话自己的多个内部系统互通用 SSO给第三方应用发带授权范围Scope的令牌用 OAuth2。Sa-Token 的 OAuth2 模块 提供授权码、隐式、密码、客户端凭证四种模式支持 openid 对接示例在 sa-token-demo-oauth2。更多实战场景记住我、同端互斥、二级认证、账号封禁都在 官方文档 里按章节排好了。从哪继续看仓库里的路标想做的事去哪看系统学习文档优先sa-token-doc/ 官方文档全中文边跑边学sa-token-demo/ 60 个集成示例看内核实现sa-token-core/ 核心包源码加 Redis / JWT / API Key 等能力sa-token-plugin/ 插件全家桶接入自己用的 Web 框架sa-token-starter/ 各框架集成包回到这条路线登录一行代码、接口两行注解、Redis 一个依赖、SSO 一次选型——这就是 Sa-Token 想让你感受到的简单。从最小的 SpringBoot 示例跑起来按上面四个关卡依次通关你的权限系统就成型了。【免费下载链接】Sa-Token✨ 开源、免费、一站式 Java 权限认证框架让鉴权变得简单、优雅—— 登录认证、权限认证、分布式 Session 会话、微服务网关鉴权、SSO 单点登录、OAuth2.0 统一认证、jwt 集成、API Key 秘钥授权、API 参数签名项目地址: https://gitcode.com/GitHub_Trending/sa/Sa-Token创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表