2014-11-23 35 views
0

我是初學struts2的。我正在使用struts2令牌攔截器來防止CSRF。令牌攔截器爲登錄頁面工作,但它不適用於第二頁。第二頁只是一個超鏈接的JSP,當我更改標記值時,它會顯示「無法在參數中查找標記名稱」。這是我的代碼無法在jsp中包含令牌struts2

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標記intercepto。

請建議

+0

請參閱我對此問題的回答:http://stackoverflow.com/q/18822095/1700321。 – 2014-11-24 08:41:24

回答

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> 
+0

不,它不工作..我仍然收到相同的錯誤 – anonymous 2014-11-23 15:28:30

0

嘗試使用token而不是tokenSession。

<interceptor-ref name="token" /> 

還張貼第二頁的支柱映射提交。