调用$ {_ csrf.parameterName}&注销表单中的$ {_ csrf.token}通过url点击

时间:2016-02-06 19:31:21

标签: java spring spring-mvc spring-security

您好我通过Spring学习安全性,我从教程中读到一句话如果启用了CSRF,则必须包含_csrf.token 在您要登录或退出的页面中。

以下是我通过提交按钮调用它们的方法:

    <c:url var="logoutAction" value="/j_spring_security_logout" />                
        <form action="${logoutAction}" method="post">
        <input type="submit" value="Logout" />
        <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
        </form>

我的问题是如何以 <a href=".."> 的形式调用它们:

<c:url var="logoutAction" value="/j_spring_security_logout" />    
<a href="${logoutAction}"> logout</a> 

我如何以上述形式调用 csrf 保护,希望你能得到我的问题谢谢。

2 个答案:

答案 0 :(得分:1)

您必须在注销路径中包含csrf,即/yourapp/logout?[csrf_param_name]=[csrf_token]

答案 1 :(得分:0)

您配置错误,应首先使用JSP指令包含spring标记库,如下所示:

start -> statement // cannot change

statement -> IDENTIFIER statement0 SEMICOLON

statement0 ->  EQUAL expression

statement0 ->  LPAREN parameters RPAREN SEMICOLON

然后在您的表单中确保包含以下内容:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

例如:

<sec:csrfInput />

对于注销链接执行相同操作,请使用表单。这是我项目的一个例子:

<form method="post" action="/do/something">
        <sec:csrfInput />
        Name:<br />
        <input type="text" name="name" />
        ...
</form>