2012-04-03 80 views
0

我的項目在struts1.2中。有沒有在struts1.2中實現令牌攔截器(struts2)? 我知道它可以通過使用struts中的令牌攔截器1.2

  1. saveToken(HttpServletRequest req)
  2. isTokenValid(HttpServletRequest req)
  3. resetToken(HttpServletRequest req)

來實現,但我不希望在每一個動作在上面添加。

回答

2

我知道Struts2的但不是struts1中(所以,從這個角度這些解決方案的攻擊,一個struts1中的人可能有關於一個更漂亮的解決了這個問題):

1)加春(如果它不存在已經)...使用AOP添加這些方法。 [成本:可能學習一項新技術]

2)在Struts1映射.action到struts2和.do到struts1上使用Struts2 ...創建一個可能被稱爲「token」並可能映射到/ token的struts2包採用通配符來捕捉你曾經投擲過的東西......這將轉向struts1的行動。 PS:你問過它是如何完成的......這遠非漂亮,我不會這樣做。 [成本:映射邏輯複雜]

3)將所有內容轉換爲struts2並使用令牌攔截器。 [成本:高時間投入]

4)創建一個新的基本動作類,您的動作將擴展,實現這些方法。

+0

感謝Quaternion,因爲我曾經用過春天我想用第一種解決方案 – Vipul 2012-04-03 17:50:02

0

如果你想在Struts 2中使用TokenInterceptor,你必須引用tokenSession攔截器。
必須在struts.xml中通過名稱=「invalid.token」在特定操作中處理結果。
您在該頁面上生成動作的頁面必須寫入s:標頭中的令牌標記

1

攔截器在Struts 1上不存在,可以使用servlet過濾器。但請注意,不要控制HTTP GET請求上的令牌,以免拒絕所有請求。

Servlet Filters and Event Listeners

saveToken()對POST請求的所有請求和isTokenValid()resetToken()。