【发布时间】:2019-12-17 19:00:24
【问题描述】:
我有一个 Spring MVC 应用程序,视图层是基于 jsp 的。有时我收到这个错误消息,这个消息是真的,会话真的过期了。如果我再次登录,那么一切都很好。 我正在使用以下机制发送 CSRF 令牌: 在 head 部分添加了 2 个元标记:
<meta name="_csrf" content="${_csrf.token}" />
<meta name="_csrf_header" content="${_csrf.headerName}" />
在每次 Ajax 调用中,都会检索令牌和标头:
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
然后使用 XMLHttpRequest 发送此标头和令牌:
$.ajax({
type : "GET",
url : xxx,
beforeSend : function(xhr) {
xhr.setRequestHeader(header, token);
},
complete : function() {
},
success : function(response) {
}
});
这就是大多数jsp页面中的情况。我尝试在警报消息中捕获令牌并且它有效。如果会话已通过一个页面过期,我想将用户重定向到登录页面,该页面将显示用户被重定向的原因。这个怎么办?
在服务器端 Spring 我们使用了基于 xml 的配置:
<http auto-config="true" use-expressions="true">
...
<csrf/>
</http>
【问题讨论】:
标签: spring-mvc jsp csrf