谁能建议一个可行的解决方案来防止直接访问 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 过滤器部分。
有什么想法吗?
非常感谢!汤姆