2012-04-19 20 views
3

我希望能夠記錄我的應用程序收到的未經授權的請求。由於Shiro插件使用HTTP重定向將用戶發送到auth/unauthorized,請求對象是一個新的請求對象,我無法獲取原始URL;控制器/操作名稱;或從中請求參數。確定使用Shiro Grails插件未經授權的請求的URL(或控制器和操作名稱)

有沒有一種方法來確定原始網址,或控制器和動作名稱(並請求params如果可能)在AuthController未授權的行動?

我正在查看http://plugins.grails.org/grails-shiro/tags/RELEASE_1_1_3/ShiroGrailsPlugin.groovy作爲插件源的參考。

詳情:
Grails的1.3.7
四郎的Grails插件1.1.3

回答

2

我有同樣的問題......我的解決方案並不完美:

一個瀏覽器發送所謂的引薦您可以通過其中一個標頭

request?.getHeader('Referer') 

但是,引用者是你真正可以依賴的東西 - 但大多數瀏覽器發送它。

另一種解決方案可能是過濾器:嘗試在ShiroSecurityFilters.groovy之前致電accessControl()之前將當前網址寫入另一個變量。您可以通過request.forwardURI獲取當前網址。

更新:只是驗證了我的最後一個假設 - 這似乎是最乾淨的解決方案對我說:

ShiroSecurityFilters.groovy,更換

  // Access control by convention. 
      accessControl() 

  // Access control by convention. 
      if (!accessControl()) { 
       session.deniedUrl = request.forwardURI 
       return false 
      } 

它使您能夠訪問網址爲session.deniedUrl在您的授權/未授權控制器中。

+0

對不起,回覆緩慢。謝謝Ralf,您的更新解決方案看起來乾淨而簡單。我想我會繼續這樣做。 – David 2012-04-23 03:54:25

相關問題