2011-11-11 20 views
0

我遇到了問題。對於很多現有的鏈接,我想添加一個salted哈希出於安全原因。我不想查找並更改所有現有鏈接。真的,我很想在UrlMappings中解決這個問題。是否可以在grails中分隔常規和反向UrlMappings?

這裏的東西,對於匹配傳入請求的工作原理:

"/foo/$key/$hash" { 
     controller = "foo" 
     action = "bar" 
    } 

這裏的東西,對於反向映射(建立連結)工作原理:

"/foo/$key/${DigestUtils.shaHex("$salt$key")}" { 
     controller = "foo" 
     action = "bar" 
    } 

似乎我無法弄清楚是怎麼將這兩者合二爲一,或者如何讓一個處理傳入的請求,另一個處理createLinks。

任何想法?

回答

0

一種方法是創建一個自定義標籤(在TagLib中),該標籤將添加散列值並環繞createLink。

所以基本上

createHashLink = {ATTRS - >

def hash = "${DigestUtils.shaHex("$salt$key")}" 
out << createLink(mapping: 'blah', params: [ hash: hash ]) ... 

}

在你的代碼,然後你可以只調用g.createHashLink(...),這將在工作與createLink相同的方式。

+0

我知道會工作,但我希望直接從UrlMappings做到這一點。它的一部分工作在UrlMappings中;把東西放在一起不會。 – mcv

相關問題