我在让我的Angular2客户端与我的Spring服务器通信时遇到问题,因为我添加了spring-security,即当我尝试将包含身份验证信息的JSON发送到服务器登录URL时,我得到了403“无效的CSRF在请求参数'_csrf'或标题'X-CSRF-TOKEN'上找到令牌'null'。“
我知道我应该在我的响应的标题上传递一个令牌以供客户端使用但是这个令牌没有被传递。我尝试了this answer,但令牌仍未通过。我也是通过邮递员发送请求,而令牌也没有到达。
if ($index % 2 == 0) {
$first = 'partial_one';
$last = 'partial_two';
}
else {
$first = 'partial_two';
$last = 'partial_one';
}
:
webSecurityConfig.xml
<http entry-point-ref="restAuthenticationEntryPoint">
<intercept-url pattern="/api/**" access="hasRole('ROLE_USER')"/>
<form-login
authentication-success-handler-ref="mySuccessHandler"
authentication-failure-handler-ref="myFailureHandler"
/>
<logout />
</http>
<beans:bean id="mySuccessHandler"
class="com.eficid.cloud.security.rest.AuthenticationSuccessHandler"/>
<beans:bean id="myFailureHandler" class=
"org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler"/>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="temp" password="temp" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</beans:beans>
SpringSecurityConfiguration
答案 0 :(得分:1)
可能是拼写错误:
private CsrfTokenRepository csrfTokenRepository() {
HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
repository.setHeaderName("X-XSRF-TOKEN");
return repository;
}
必须是X-CSRF-TOKEN而不是X-XSRF-TOKEN。建议重构。