javascript – Spring Security CSRF Token在同一个JSP中不使用AJAX调用和表单提交
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Spring Security CSRF Token在同一个JSP中不使用AJAX调用和表单提交,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2932字,纯文字阅读大概需要5分钟。
内容图文
![javascript – Spring Security CSRF Token在同一个JSP中不使用AJAX调用和表单提交](/upload/InfoBanner/zyjiaocheng/766/29f6275735b2477e9f397bbd5d70b682.jpg)
我试图通过下面的链接在我的项目中实现spring security(ver 3.2.3)CSRF令牌
http://docs.spring.io/autorepo/docs/spring-security/4.0.0.CI-SNAPSHOT/reference/htmlsingle/#csrf
http://docs.spring.io/autorepo/docs/spring-security/4.0.0.CI-SNAPSHOT/reference/htmlsingle/#the-csrfmetatags-tag
我能够在没有AJAX调用的情况下成功地在JSP中集成CSRF令牌.
但是,当我尝试使用AJAX调用JSP时,获得“无效的CSRF令牌异常”.
经过我的分析,我找到了AJAX的电话和电话.表单提交使用相同的令牌,因为我得到’无效的CSRF令牌例外’.
可以请任何人帮我突袭这个问题.有没有办法生成两个令牌,即一个用于AJAX呼叫&一个表单提交
security.xml文件
<access-denied-handler ref="accessDenied" />
<intercept-url pattern="/**" access="ROLE_1" />
<form-login default-target-url='/loginUser.htm' always-use-default-target='true' authentication-failure-url='/forms/common/login.jsp?error=true' />
<logout logout-success-url="/forms/common/logout.jsp" invalidate-session="true" delete-cookies="JSESSIONID" />
<session-management invalid-session-url="/forms/common/sessionexpired.jsp" session-authentication-error-url="/forms/common/login.jsp?Error=alreadyLoggedin" >
<concurrency-control expired-url="/forms/common/sessionexpired.jsp" max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>
<csrf request-matcher-ref="csrfSecurityRequestMatcher"/>
</http>
<beans:bean class="com.concerto.pg.login.security.CsrfSecurityRequestMatcher" id="csrfSecurityRequestMatcher"/>
JSP
<head>
<sec:csrfMetaTags />
<script type="text/javascript" charset="utf-8">
function changeList(id,option){
var csrfParameter = $("meta[name='_csrf_parameter']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
var institution = document.getElementById("institutionId").value;
var data = {};
data[csrfParameter] = csrfToken;
data["institutionId"] = option;
if(id=="institutionId"){
var result ='';
$.ajax({
type: "GET",
async: false,
url: './getMerchantByInstitution.htm',
data: data,//"institutionId=" + option,
dataType:'json',
success: function (res) {
result = res;
var htmlVar = '';
for (var i=0; i<result.length; i++){
htmlVar += '<option
value="'+result[i]+'">'+result[i]+'</option>';
}
htmlVar += '<option value="ALL">ALL</option>';
$('#merchantId').html(htmlVar);
}
});
}
}
</script>
</head>
added below < input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> statement in form tag
谢谢&问候,
湿婆
解决方法:
我希望以下答案有所帮助.
进行这些更改
var csrfParameter = $("meta[name='_csrf_parameter']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
var csrfHeader = $("meta[name='_csrf_header']").attr("content"); // THIS WAS ADDED
之后
data[csrfParameter] = csrfToken;
data["institutionId"] = option;
headers[csrfHeader] = csrfToken; // THIS WAS ADDED
最后改变了ajax调用:
url: './getMerchantByInstitution.htm',
headers: headers, // THIS WAS ADDED
data: data,//"institutionId=" + option,
dataType:'json',
让我知道这个是否奏效.
内容总结
以上是互联网集市为您收集整理的javascript – Spring Security CSRF Token在同一个JSP中不使用AJAX调用和表单提交全部内容,希望文章能够帮你解决javascript – Spring Security CSRF Token在同一个JSP中不使用AJAX调用和表单提交所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。