使用spring security告诉ajax请求登录页面在哪里

我有一些用spring保护的网址(通过xml配置)。有用。但是,当我尝试使用ajax请求到达该端点时,得到了302(找到)响应。这会将我的ajax调用重定向到登录页面(因此我获取html)。但是,我想获得一个401(未经授权)响应,其中包含客户端应用程序可用的登录页面的url,因此我可以使用javascript将用户重定向到那里。

这个问题似乎与我想要的最接近,但是没有示例,它建议再次更改控制器。spring-

security中是否没有配置可以提供401和url(或其他一些明智的错误消息和登录页面的url)?

回答:

您可以扩展LoginUrlAuthenticationEntryPoint。这是我的:

package hu.progos.springutils;

// imports omitted

public class AjaxAwareLoginUrlAuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {

public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException) throws IOException, ServletException {

if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {

response.sendError(HttpServletResponse.SC_FORBIDDEN, "Access Denied");

} else {

super.commence(request, response, authException);

}

}

}

然后配置spring以使用您的实现:

<beans:bean id="authEntryPoint" class="hu.progos.springutils.AjaxAwareLoginUrlAuthenticationEntryPoint" scope="singleton>

<beans:property name="loginFormUrl" value="/login.html" />

</beans:bean>

<http entry-point-ref="authEntryPoint">

<!-- your settings here -->

</http>

以上是 使用spring security告诉ajax请求登录页面在哪里 的全部内容, 来源链接: utcz.com/qa/419045.html

回到顶部