gpt4 book ai didi

Spring 安全 : Redirect to Login Page in case of 401

转载 作者:行者123 更新时间:2023-12-03 14:19:20 26 4
gpt4 key购买 nike

我有一个公开 REST API 并使用 Spring Security 进行保护的应用程序。如果发送到我的服务器的请求导致 401 - 未经授权,有没有办法自动将客户端(从服务器端)重定向到登录页面?

最佳答案

对于 spring-security基于 spring-boot 的应用程序.

定义一个处理程序 bean:

@Component
public class CommenceEntryPoint implements AuthenticationEntryPoint, Serializable {
private static final long serialVersionUID = 565662170056829238L;

// invoked when user tries to access a secured REST resource without supplying any credentials,
@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {
// send a json object, with http code 401,
// response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");

// redirect to login page, for non-ajax request,
response.sendRedirect("/login.html");
}
}

在安全配置类(例如 WebSecurityConfig )中:

Autowiring bean:
@Autowired
private CommenceEntryPoint unauthorizedHandler; // handle unauthorized request,

指定处理程序:
.exceptionHandling().authenticationEntryPoint(unauthorizedHandler).and() // excepion handler,

温馨提示:
  • 这仅适用于非ajax请求,
  • 对于ajax请求,最好返回401代码,让前端处理。
    如果您想使用 401回复,在 CommenceEntryPoint.commence()只需使用 response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized");而不是 response.sendRedirect() .
  • 关于 Spring 安全 : Redirect to Login Page in case of 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394626/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com