任何人都可以建議一種可行的解決方案,以防止直接訪問Grails上的* .gsp頁面?如何防止直接訪問Grails中的* .gsp頁面
審查攔截「/**.gsp」後,我發現這是不可能使用,因爲它不僅過濾掉的直接訪問,同時也是頁面從控制器渲染等
我試圖設置在UrlMapping.groovy中,儘管我可以阻止* .gsp直接訪問,但我也弄亂了頁面的導航;所有的鏈接似乎都會回到主頁。
"/**.gsp" {
isEligible = {
System.err.println("ALL PARAMS: " + params)
request.requestURL.toString().endsWith(".gsp")
}
controller = {
if (request.requestURL.toString().endsWith(".gsp")) {
"public"
} else {
"*"
}
}
action = {
if (request.requestURL.toString().endsWith(".gsp")) {
"home"
} else {
"*"
}
}
}
一旦我想過像org.springframework.web.filter.OncePerRequestFilter設置過濾器,但不太清楚怎麼可能將其定義爲Grails的傾向於通過自身產生的web.xml中過濾器部分。
有什麼想法?
非常感謝! tom
只是想到這一點,你有沒有測試過,以確認你有測試和生產環境中的直接訪問?我有一種感覺,當你的環境設置爲Development時,Grails可能只允許直接訪問。 – Melv 2011-03-06 23:35:18
非常有趣的問題。我從來沒有注意到它,但即使在生產中它也發生在我身上。雖然頁面會非常像返回錯誤,因爲它沒有來自控制器的信息。 – 2011-03-07 07:08:44
我剛剛在生產模式下運行完畢,存在同樣的問題;無論如何,謝謝你的提示!我只是想知道如何在示例代碼中設置一些代理以防止這些非直接訪問的匹配;你看,我試過'合格',但它不起作用。 – 2011-03-07 10:45:25