无法在jsp struts2中包含令牌

时间:2014-11-23 14:29:17

标签: struts2

我是struts2的初学者。我正在使用struts2令牌拦截器来防止CSRF。用于登录页面的令牌拦截器,但它不适用于第二页。第二页只是一个带有超链接的JSP,当我更改令牌值时,它表示"无法在params中找到令牌名称" 。这是我的代码

JSP

<div style="margin: 0 auto; font-size: 16px;">


<s:token />
<a href="<s:url value="view"  />" >Click Here to View and Search Data</a>
<br/><br/> 
<a href="<s:url value="Upload.jsp"  />" >Click here to Upload Data (CSV format)</a>
<br/><br/> 
<a href="<s:url value="Register.jsp"  />" >Click here to Upload Data (FORM)</a>

  </div>

struts.xml中

<package name="default" extends="struts-default, json-default">    
    <!-- CREATING INTERCEPTOR -->

    <interceptors>
        <interceptor-stack name="myStack">
            <interceptor-ref name="defaultStack" />
            <interceptor-ref name="tokenSession" />  
            <interceptor-ref name="timer"/>
            <interceptor-ref name="logger"/>  
            <interceptor-ref name="fileUpload" />                                    
        </interceptor-stack>
    </interceptors>

    <default-interceptor-ref name="myStack"/>

    <global-results>
        <result name="invalid.token">/error.jsp</result>
    </global-results>
    <action name="login" class="action.loginAction">
        <result name="input">/Login.jsp</result>
        <result name="success">/Main.jsp</result>
        <result name="error">/error.jsp</result>           
    </action>

如何为此jsp实现令牌拦截。

请建议

2 个答案:

答案 0 :(得分:0)

尝试更改拦截器的顺序,将defaultStack保留在最后。

<interceptors>
    <interceptor-stack name="myStack">
        <interceptor-ref name="tokenSession" />  
        <interceptor-ref name="timer"/>
        <interceptor-ref name="logger"/>  
        <interceptor-ref name="fileUpload" />
        <interceptor-ref name="defaultStack" />                                    
    </interceptor-stack>
</interceptors>

答案 1 :(得分:0)

尝试使用令牌代替tokenSession。

<interceptor-ref name="token" />

还发布第二页提交的struts映射。