Spring security 未找到预期的CSRF令牌。您的会话是否已过期+;Spring security+;CSRF

Spring security 未找到预期的CSRF令牌。您的会话是否已过期+;Spring security+;CSRF,spring-security,csrf-protection,Spring Security,Csrf Protection,我正试图通过spring security实现CSRF 但是,在单击登录按钮(从home.jsp)后,浏览器中出现以下错误 未找到预期的CSRF令牌。您的会话是否已过期? 我在中有以下配置 spring-security-config.xml: <http auto-config="false"> <csrf/> </http> home.jsp: <form action="j_spring_security_check" id="LoginFo

我正试图通过spring security实现CSRF

但是,在单击登录按钮(从home.jsp)后,浏览器中出现以下错误

未找到预期的CSRF令牌。您的会话是否已过期?

我在中有以下配置

spring-security-config.xml:

<http auto-config="false">
<csrf/>
</http>

home.jsp:

<form action="j_spring_security_check" id="LoginForm" method="post">       
    <input type="text" title="Username" name="j_username" id="j_username" 
           class="inset-shadow defaultText" placeholder="Username" />
    <input type="password" title="Password" name="j_password" 
           id="j_password" class="inset-shadow defaultText" placeholder="Password" />
    <input type="submit" class="submit" title="LOGIN" 
           onsubmit="javascript:{loginSubmit();}"/>
    <input type="hidden" name="_csrf" value="dc7ce2be-f73b-4086-8f90-8ef00b8f81d5"/>    
</form>

jboss server.log中的错误:

2015-09-14 19:56:10,221 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/].[jsp]] (http-127.0.0.1-8190-2) Servlet.service() for servlet jsp threw exception: java.lang.IllegalStateException: getAttribute: Session already invalidated at org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:1024) [:6.1.0.Final] at org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:110) [:6.1.0.Final] at org.apache.jsp.WEB_002dINF.jsp.home_jsp._jspService(home_jsp.java:99) 2015-09-14 19:56:10221错误[org.apache.catalina.core.ContainerBase.[jboss.web].[localhost]./.[jsp]](http-127.0.0.1-8190-2)Servlet jsp的Servlet.service()引发异常:java.lang.IllegalStateException:getAttribute:会话已无效 位于org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:1024)[:6.1.0.Final] 位于org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:110)[:6.1.0.Final] 在org.apache.jsp.WEB\u 002dINF.jsp.home\u jsp.\u jsp服务(home\u jsp.java:99) 注意:不确定server.log中的错误是否与CSRF相关

非常感谢您对这个问题的任何帮助。

而不是

<input type="hidden" name="_csrf" value="dc7ce2be-f73b-4086-8f90-8ef00b8f81d5"/>

你试过了吗

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

根据文档,csrf和令牌将由Spring计算并作为请求参数附加,名称为
${u csrf.parameterName}
,值为
${u csrf.token}

,而不是

<input type="hidden" name="_csrf" value="dc7ce2be-f73b-4086-8f90-8ef00b8f81d5"/>

你试过了吗

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

根据文档,csrf和令牌将由Spring计算并作为请求参数附加,名称为
${u csrf.parameterName}
,值为
${u csrf.token}

,而不是

<input type="hidden" name="_csrf" value="dc7ce2be-f73b-4086-8f90-8ef00b8f81d5"/>

你试过了吗

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

根据文档,csrf和令牌将由Spring计算并作为请求参数附加,名称为
${u csrf.parameterName}
,值为
${u csrf.token}

,而不是

<input type="hidden" name="_csrf" value="dc7ce2be-f73b-4086-8f90-8ef00b8f81d5"/>

你试过了吗

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

根据文档,csrf和令牌将由Spring计算并作为请求参数附加,名称为
${{u csrf.parameterName}
,值为
${u csrf.token}

我有相同的错误

在我的案例中,包含表单的html页面有一个链接标签,指向我的web应用程序中的css文件。 这个指向css文件的链接也受到了spring安全性的保护,因此,我发现了您的错误

当我取消对css文件链接的保护时,不会发生错误

这是一个如何使用Java配置在Spring Security中取消文件保护的示例

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/css/**");
}
我也犯了同样的错误

在我的案例中,包含表单的html页面有一个链接标签,指向我的web应用程序中的css文件。 这个指向css文件的链接也受到了spring安全性的保护,因此,我发现了您的错误

当我取消对css文件链接的保护时,不会发生错误

这是一个如何使用Java配置在Spring Security中取消文件保护的示例

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/css/**");
}
我也犯了同样的错误

在我的案例中,包含表单的html页面有一个链接标签,指向我的web应用程序中的css文件。 这个指向css文件的链接也受到了spring安全性的保护,因此,我发现了您的错误

当我取消对css文件链接的保护时,不会发生错误

这是一个如何使用Java配置在Spring Security中取消文件保护的示例

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/css/**");
}
我也犯了同样的错误

在我的案例中,包含表单的html页面有一个链接标签,指向我的web应用程序中的css文件。 这个指向css文件的链接也受到了spring安全性的保护,因此,我发现了您的错误

当我取消对css文件链接的保护时,不会发生错误

这是一个如何使用Java配置在Spring Security中取消文件保护的示例

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/css/**");
}

我已经这样做了,我完全按照你的建议使用了,“\u csrf”只是对${{u csrf.parameterName}的解释,dc7ce2be-f73b-4086-8f90-8ef00b8f81d5是${u csrf.token}的解释,我已经这样做了,我完全按照你的建议使用了,“\u csrf”只是对${u csrf.parameterName}的解释dc7ce2be-f73b-4086-8f90-8ef00b8f81d5是${u csrf.token}的解释我已经这样做了,我完全按照你的建议使用了,“{u csrf”只是${u csrf.parameterName}的解释,dc7ce2be-f73b-4086-8f90-8ef00b8f81d5是${u csrf.token}我已经这样做了,我完全按照你的建议和建议使用了“_csrf”只是${u csrf.parameterName}的解释,而dc7ce2be-f73b-4086-8f90-8ef00b8f81d5是${u csrf.token}的解释我看到有人对这个问题不加解释。我竖起大拇指,直到我得到解释。我看到有人对这个问题不加解释。我竖起大拇指,直到我得到解释。我看到有人对这个问题不加解释。我竖起大拇指,直到我得到解释我看到有人在没有解释的情况下对这个问题表示反对。在得到解释之前,我一直在竖起大拇指。