S河南郑州双主调K:一座城市,两种韵味,一场不容错过的盛宴

核心内容摘要

小入视频17c:探索数字世界的无限边疆
哥们,姐妹们,一起“搓”出人生新高度!

影音先锋️你懂的:开启私密视听的“潘多拉魔盒”,老司机的终极秘密基地

视频看了几百小时还迷糊关注我几分钟让你秒懂在使用Sa-Token做权限控制时我们通常希望/login、/register、/health等接口无需登录即可访问Swagger 文档、静态资源、验证码接口跳过鉴权某些临时调试接口暂时关闭权限校验。

但如果你配置了全局拦截器所有请求都会被拦截返回401 Unauthorized怎么办本文将教你三种官方推荐方式安全、灵活地忽略 Sa-Token 鉴权并附上完整 Spring Boot 示例 反例避坑指南

前提你已配置全局拦截器假设你已经注册了 Sa-Token 的全局路由拦截器这是最佳实践Configuration public class SaTokenConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SaRouteInterceptor()) .addPathPatterns(/**); // 拦截所有请求 } }此时所有接口都需要登录才能访问。

我们需要“放行”部分路径。

✅ 方法一excludePathPatterns推荐最常用在注册拦截器时直接排除不需要鉴权的路径。

Configuration public class SaTokenConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SaRouteInterceptor()) .addPathPatterns(/**) .excludePathPatterns( /login, /register, /captcha, /health, /doc.html, /webjars/**, /swagger-resources/**, /v3/api-docs/** ); } }✅优点配置清晰、性能高、无侵入适用场景公开接口、文档、健康检查等✅ 方法二SaIgnore 注解方法级忽略如果你只想忽略某个 Controller 方法可以用SaIgnore注解。

确保你的 Sa-Token 版本 ≥

1.

25.

在方法上加注解RestController public class PublicController { SaIgnore // ← 忽略 Sa-Token 鉴权 GetMapping(/public/hello) public String hello() { return 无需登录也能访问; } SaIgnore PostMapping(/register) public String register(RequestBody User user) { // 注册逻辑 return 注册成功; } }✅优点精准控制适合临时放行⚠️注意该注解只对 SaRouteInterceptor 生效对自定义拦截器无效✅ 方法三在拦截器中手动放行高级用法如果你有复杂的放行逻辑比如根据 IP、Header 动态判断可以在自定义拦截器中处理。

public class CustomSaInterceptor extends SaRouteInterceptor { Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { String uri request.getRequestURI(); // 自定义放行规则 if (uri.startsWith(/api/open/) || isWhiteIp(request)) { return true; // 直接放行不执行父类鉴权 } // 否则走正常 Sa-Token 鉴权 return super.preHandle(request, response, handler); } private boolean isWhiteIp(HttpServletRequest request) { String ip request.getRemoteAddr(); return

127.

0.

0.

equals(ip) ||

192.

168.

1.

equals(ip); } }然后注册这个自定义拦截器Configuration public class InterceptorConfig implements WebMvcConfigurer { Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new CustomSaInterceptor()) .addPathPatterns(/**); } }✅适用场景IP 白名单、内部系统调用、灰度发布等⚠️

反例错误的忽略方式千万别用❌ 反例1在 Controller 里 try-catch 绕过GetMapping(/test) public String test() { try { StpUtil.checkLogin(); // 手动校验 } catch (Exception e) { // 忽略异常 → 表面上能访问但逻辑混乱 } return xxx; }问题代码冗余无法统一管理容易漏掉权限校验。

❌ 反例2全局不注册拦截器靠每个方法手动 checkGetMapping(/user) public String user() { StpUtil.checkLogin(); // 每个方法都写 return ...; }后果极易遗漏后期维护成本高违背“约定优于配置”原则。

✅ 正确做法用 excludePathPatterns 或 SaIgnore

安全

注意事项不要过度放行例如excludePathPatterns(/**)→ 等于没鉴权敏感接口即使公开也要做参数校验比如/register虽然免登录但要防刷、防注入。

Swagger 路径要放全常见遗漏- /v3/api-docs - /swagger-ui/** - /doc.html - /webjars/springfox-swagger-ui/**生产环境关闭调试接口可通过 profile 控制Profile(dev) SaIgnore GetMapping(/debug/clear-cache) public String clear() { ... }

完整示例项目结构src/main/java └── com.example.satoken ├── config/SaTokenConfig.java ← 拦截器配置 ├── controller │ ├── AuthController.java ← /login放行 │ ├── UserController.java ← /user/info需登录 │ └── PublicController.java ← /public/helloSaIgnore └── SatokenApplication.java测试流程访问/login→ 成功放行访问/user/info→ 返回 401未登录登录后携带 token 访问/user/info→ 成功访问/public/hello→ 无需 token 也能访问

总结如何选择忽略方式场景推荐方式公开接口登录、注册、健康检查excludePathPatterns个别方法临时放行SaIgnore动态规则IP、Header 判断自定义拦截器整个模块免鉴权excludePathPatterns(/open/**)记住鉴权要严放行要明合理使用忽略机制既能保证安全又不失灵活性。

视频看了几百小时还迷糊关注我几分钟让你秒懂

戊戌人在线观看免费完整版-戊戌人在线观看免费完整版应用

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

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