【重磅福利】告别担忧!100%胸片曝光率,免费无病毒软件,守护您的健康!

核心内容摘要

冰雪初绽,情动莫斯科:七日俄罗斯初体验的浪漫与惊喜
绝顶感官盛宴:当“速度”与“极致”在磨朵的数字荒原巅峰相遇

探秘“网禁拗女稀缺130”:数字时代的隐秘情感链接

视频看了几百小时还迷糊关注我几分钟让你秒懂在开发 Web 项目时登录认证、权限控制、会话管理几乎是每个系统都绕不开的需求。

传统方案如 Spring Security 虽然强大但配置复杂、学习成本高而 JWT 又要自己处理 token 刷新、登出等问题。

有没有一个轻量、简单、功能全的权限框架答案就是 ——Sa-Token今天我们就用Spring Boot Java手把手教你集成 Sa-Token实现登录、鉴权、角色权限、踢人下线等核心功能10 分钟搞定权限系统

Sa-Token 是什么Sa-Token 是一个国产、轻量、高效的 Java 权限认证框架主打✅ 登录认证Token 管理✅ 权限验证角色 权限码✅ Session 会话分布式无状态✅ 踢人下线、账号封禁✅ 单点登录SSO、OAuth2 支持✅零配置启动API 极简官网https://sa-token.dev

cn

快速集成5 步搞定

添加 Maven 依赖dependency groupIdcn.dev33/groupId artifactIdsa-token-spring-boot-starter/artifactId version

1.

3

0/version !-- 建议使用最新版 -- /dependency⚠️ 注意不需要额外引入 Redis 依赖Sa-Token 默认使用内存存储生产环境建议配 Redis。

配置 application.yml可选sa-token: # token 名称默认 satoken token-name: Authorization # token 有效期秒默认 7 天 timeout: 2592000 # token 最低活跃时间秒默认 0不刷新 active-timeout: 1800 # 是否允许同一账号多地登录true允许false踢掉前一个 is-concurrent: true # 是否启用二级认证如短信验证码 is-share: false # token 风格默认为uuid token-style: uuid # 是否输出日志 is-log: true 初学者可以先不配全部用默认值

模拟用户登录接口RestController public class LoginController { // 模拟数据库用户实际应查数据库 private static final MapString, String USER_DB Map.of( admin, 123456, user, 123456 ); PostMapping(/login) public String login(RequestParam String username, RequestParam String password) { //

校验账号密码 if (!USER_DB.containsKey(username) || !USER_DB.get(username).equals(password)) { return 账号或密码错误; } //

写入当前登录用户 IDSa-Token 自动创建 Token 并绑定会话 StpUtil.login(10001L); // 假设 admin 的 ID 是 10001 //

返回 Token前端需保存到 localStorage 或 Cookie return 登录成功Token: StpUtil.getTokenValue(); } GetMapping(/logout) public String logout() { StpUtil.logout(); // 当前会话注销 return 已退出登录; } }✅ 调用StpUtil.login(userId)后Sa-Token 会自动生成 Token 并关联用户会话

受保护的接口需要登录才能访问RestController public class UserController { // 必须登录才能访问 GetMapping(/user/info) public Object getUserInfo() { // 获取当前登录用户 ID Long userId StpUtil.getLoginIdAsLong(); return Map.of(userId, userId, username, admin); } // 必须具有 admin 角色 GetMapping(/admin/setting) public String adminSetting() { // 校验是否具有 admin 角色会抛异常若无权限 StpUtil.checkRole(admin); return 管理员设置页面; } // 必须具有 user:delete 权限 GetMapping(/user/delete) public String deleteUser() { StpUtil.checkPermission(user:delete); return 删除用户成功; } }

全局拦截器自动鉴权Sa-Token 提供了注解式鉴权和路由拦截器两种方式。

我们这里用更灵活的拦截器。

Configuration public class SaTokenConfigure implements WebMvcConfigurer { // 注册 Sa-Token 拦截器 Override public void addInterceptors(InterceptorRegistry registry) { // 所有请求都校验 Token除了 /login 等公开接口 registry.addInterceptor(new SaRouteInterceptor()) .addPathPatterns(/**) .excludePathPatterns(/login, /doc.html, /webjars/**, /swagger-resources/**); } }✅ 这样所有未登录的请求访问/user/info都会返回401

权限模型角色 vs 权限码Sa-Token 支持两种权限控制类型方法说明角色StpUtil.hasRole(admin)用户属于某个角色如 admin、user权限码StpUtil.hasPermission(user:delete)细粒度操作权限推荐如何给用户分配角色/权限重写StpInterface接口Component public class StpInterfaceImpl implements StpInterface { // 返回用户拥有的角色集合 Override public ListString getRoleList(Object loginId, String loginType) { // 模拟ID10001 的用户是 admin if (

equals(loginId.toString())) { return Arrays.asList(admin); } return Arrays.asList(user); } // 返回用户拥有的权限码集合 Override public ListString getPermissionList(Object loginId, String loginType) { if (

equals(loginId.toString())) { return Arrays.asList(user:add, user:delete, user:update); } return Arrays.asList(user:add); } }✅ Sa-Token 会在调用checkRole()或checkPermission()时自动调用此接口

反例常见错误配置❌ 反例1忘记注册拦截器// 没有 addInterceptors - 所有接口无需登录也能访问后果安全漏洞任何人都能调用/admin/setting❌ 反例2登录后没返回 Token 给前端PostMapping(/login) public void login(...) { StpUtil.login(10001L); // 忘记 return token }后果前端不知道 Token 是什么后续请求无法携带一直 401❌ 反例3生产环境用内存存储默认Sa-Token 默认将会话存在JVM 内存中重启服务所有用户掉线✅ 正确做法集成 Redisdependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependencySa-Token 会自动检测 Redis无需额外配置

高级功能一键实现功能代码示例踢某用户下线StpUtil.kickout(10001L);查询在线用户列表StpUtil.searchTokenValue(, 1, 10, true);临时提升权限StpUtil.openSafe(

; // 5分钟内免密操作单点登录配置is-concurrent: false新登录踢旧会话✅

六、

注意事项前端必须在请求头携带 Token默认 Header 名为satoken可配置GET /user/info Authorization: xxx-xxx-xxx # 注意如果 token-name 改为 Authorization不要在 URL 传 Token容易泄露敏感操作建议加二次验证如支付前输密码生产环境务必用 Redis避免服务重启丢失会话日志开启后可追踪 Token 操作便于排查问题。

总结Sa-Token极简集成5 行代码搞定登录支持角色 权限码双模型灵活控制内置踢人、会话查询、单点登录等企业级功能自动适配 Redis分布式无忧比 Spring Security 简单 10 倍比 JWT 更安全从此权限认证不再是难题视频看了几百小时还迷糊关注我几分钟让你秒懂

聂小雨大战马布里完整版-聂小雨大战马布里完整版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123