Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 春季CSRF代币发行_Java_Spring_Jsp_Spring Mvc_Csrf - Fatal编程技术网

Java 春季CSRF代币发行

Java 春季CSRF代币发行,java,spring,jsp,spring-mvc,csrf,Java,Spring,Jsp,Spring Mvc,Csrf,我正在使用SpringMVC4测试上传文件。我有这个jsp文件来上传一个文件: <c:url var="addAction" value="/create/uploadFile" ></c:url> <form method= "POST" action="${addAction}" enctype="multipart/form-data"> <input type="hidden" name="${_csrf.parameterName}" valu

我正在使用SpringMVC4测试上传文件。我有这个jsp文件来上传一个文件:

<c:url var="addAction" value="/create/uploadFile" ></c:url>
<form method= "POST" action="${addAction}" enctype="multipart/form-data">
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
    File to upload: <input type="file" name="file"/>

    <input type="submit" value="Upload"> Press here to upload the file!
</form>
单击“提交”时出现此错误

Invalid CSRF Token &#39;null&#39; was found on the request parameter &#39;_csrf&#39; or header &#39;X-CSRF-TOKEN&#39;.      
我不明白的是我的登录页面。我使用相同的过程,它的作品,我可以登录并进入上传页面。login.jsp:

<form name='loginForm' action="<c:url value='/j_spring_security_check' />" method='POST'>
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />

     username and password and submit ....
</form>

用户名和密码并提交。。。。
我的春季安全:

<http auto-config="true">
    <intercept-url pattern="/home**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER')" />
    <form-login 
        login-page="/login" 
        default-target-url="/home" 
        login-processing-url="/j_spring_security_check" 
        authentication-failure-url="/login?error" 
        username-parameter="username"
        password-parameter="password" />
    <logout logout-success-url="/login?logout"  />
    <csrf />
</http>

你知道为什么它在login.jsp上工作而不是在createupload上吗


我还尝试将上传表单绑定到一个模型中并使用form:form,但仍然不起作用。

据我所知,在登录和注销时使用csrf令牌。为什么在上传文件提交后需要它?你做了Spring Security中提到的吗?@kswaughs CSRF肯定不仅仅适用于登录/注销。
<http auto-config="true">
    <intercept-url pattern="/home**" access="hasAnyRole('ROLE_ADMIN','ROLE_USER')" />
    <form-login 
        login-page="/login" 
        default-target-url="/home" 
        login-processing-url="/j_spring_security_check" 
        authentication-failure-url="/login?error" 
        username-parameter="username"
        password-parameter="password" />
    <logout logout-success-url="/login?logout"  />
    <csrf />
</http>