0
В настоящее время я работаю над Spring Security 4. Все работает нормально, если используется метод входа по умолчанию. Однако на практике мне нужно войти в систему, используя метод Ajax.Spring Security Ajax Login
весна-security.xml
<http use-expressions="true" auto-config="true">
<intercept-url pattern="/resources/**" access="permitAll" />
<form-login
login-processing-url="/resources/login-processing"
default-target-url="http://127.0.0.1:57633/"
/>
<csrf request-matcher-ref="csrfSecurityRequestMatcher"/>
<!-- <csrf disabled="true" /> -->
</http>
В controllers
я использую @PreAuthorize
аннотацию. В JQuery, то Ajax запрос выглядит следующим образом:
$.ajax({
url:"http://localhost:8080/myapp/resources/login-processing",
data:{username:$("#inputLogin")[0].value,
password:$("#inputPassword")[0].value
},
method:"POST",
success: function(data, textStatus, request) {
console.log(request.getResponseHeader())
}
})
.done(function(data, textStatus, request) {
console.log(request.getResponseHeader("Set-Cookie"))
})
.error(function(error) {
console.log(error)
})
Даже если я поставил permitAll
, он по-прежнему ответ 403 ошибки со следующим заголовком ответа:
Access-Control-Allow-Headers:x-requested-with
Access-Control-Allow-Methods:POST, GET, OPTIONS, DELETE
Access-Control-Allow-Origin:*
Access-Control-Max-Age:3600
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Language:en
Content-Length:1116
Content-Type:text/html;charset=utf-8
Date:Mon, 18 Apr 2016 02:07:26 GMT
Expires:0
Pragma:no-cache
Server:Apache-Coyote/1.1
Set-Cookie:JSESSIONID=974B1629ECE3EB289F35097C9E9D9FDC; Path=/cancercloud/; HttpOnly
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block
Что я должен сделать, чтобы настроить Ajax логин?
имя пользователя или пароль могут быть неправильными? попробуйте hardcoded. Вы пытались изменить «http: // localhost: 8080/myapp/resources/login-processing» только на имя сервлета? – Gero
, пожалуйста, включите csrf также в ajax – FreezY