Spring Boot项目中$.get(/user)回调与接口断点仅认证成功时命中问题咨询
问题根本原因
你传入$.get()的回调是仅请求成功(HTTP响应状态码为2xx)时才会触发的成功回调,你观察到的现象完全符合预期:
- 未登录认证时,Spring Security会直接拦截所有对受保护资源的请求,根本不会走到你写的
/user接口逻辑里,所以Java侧断点不会命中。此时请求/user要么返回302重定向到登录页,要么返回401未授权的错误状态码,都不属于成功响应范畴,自然不会触发你写的JS成功回调,JS侧断点也不会命中。 - 认证成功后,Spring Security放行请求,
/user接口正常执行返回200状态码,请求成功,因此两边断点都会命中,回调逻辑正常执行。
验证方法
你可以给AJAX请求添加失败回调,就能直观看到未登录时的请求状态:
$.get("/user", function(data) { $("#user").html(data.name); $(".unauthenticated").hide() $(".authenticated").show() }).fail(function(error) { // 未登录时此处会打印302或者401状态码,验证请求确实已发出但属于失败状态 console.log("请求失败,状态码:", error.status); });
如果需要/user接口不登录也能访问,你需要在Spring Security配置类中添加对应规则,放行/user路径的请求即可。
内容的提问来源于stack exchange,提问作者NNP
相关产品推荐
相关产品推荐

