Java 春季CSRF代币发行
我正在使用SpringMVC4测试上传文件。我有这个jsp文件来上传一个文件: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
<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 'null' was found on the request parameter '_csrf' or header 'X-CSRF-TOKEN'.
我不明白的是我的登录页面。我使用相同的过程,它的作品,我可以登录并进入上传页面。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>