spring security 在使用 AJAX 登录时显示 403 错误
Posted
技术标签:
【中文标题】spring security 在使用 AJAX 登录时显示 403 错误【英文标题】:spring security showing 403 error while logging in using AJAX 【发布时间】:2015-08-15 22:05:51 【问题描述】:我知道已经有很多与此错误相关的问题,但我几乎尝试了所有方法,但没有解决我的问题。
当我在浏览器控制台中提交表单时,我看到了
Failed to load resource: the server responded with a status of 403 (Forbidden)
我的项目在 Spring 4.0.3、spring security 4.0.1、java 8 并在 wildfly 8.x 服务器上运行
我的ajax调用是
$.ajax(
url: "j_spring_security_check",
data: $('#loginForm').serialize(),
type: "POST",
beforeSend: function (xhr)
xhr.setRequestHeader("X-Ajax-call", "true");
,
success: function(result)
if (result == "not-ok")
$('.error').show();
$('.login-error').html(CREDENTIAL_CHECK) ;
return false;
else
$('.error').hide();
document.location = result;
,
error: function(XMLHttpRequest, textStatus, errorThrown)
$('.error').show();
$('.login-error').html(NETWORK_CHECK) ;
return false;
);
我的安全配置:
<security:form-login login-page="/home"
default-target-url="/home"
authentication-failure-handler-ref="myAuthenticationFailureHandler"
authentication-success-handler-ref="myAuthenticationSuccessHandler"
/>
<security:logout logout-success-url="/logout"
invalidate-session="true"
delete-cookies="SPRING_SECURITY_REMEMBER_ME_COOKIE"
/>
我试着设置
<security:headers disabled="true" />
<security:csrf disabled="true" />
它不工作。在服务器控制台中,我没有看到任何错误。
我还能做些什么来修复这个错误?我已经在这个问题上浪费了 2 天时间
【问题讨论】:
网址是login
而不是j_spring_security_check
。
你怎么说?
检查控制器中的 ajax url 是否存在。并确保您的 RequestMethod.POST 在您的控制器中。
登录 url 在 spring security 4 中更改以匹配 java config 中使用的那个。
为此它也显示403错误..我认为..问题是别的..我正在使用wildfly8
【参考方案1】:
该问题创建 CSFR 保护,因为在 Spring Security 4.x 中默认启用并且所有 GET 和 POST 请求都有令牌,当您不创建此令牌服务器时会显示 403 错误。您可以轻松禁用此安全性 这里有 xml conf http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-xml.html 和 java conf http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-jc.html
【讨论】:
以上是关于spring security 在使用 AJAX 登录时显示 403 错误的主要内容,如果未能解决你的问题,请参考以下文章
spring security 在使用 AJAX 登录时显示 403 错误
ajax请求在spring security中被拒绝,Grails
用于ajax调用的spring security csrf保护