保护gsp文件

时间:2011-08-11 12:21:47

标签: grails spring-security security gsp

我对Spring相对较新,但对Spring Security和Grails来说却是新手。简而言之,我知道它建议不允许.jsp文件可以使用,你应该将它们放在WEB-INF中,并设置你的控制器以将它们从正确的地方拉出来。

我将如何在Grails中执行此操作?似乎我会通过将gsp放入WEB-INF然后将逻辑编写到我的所有控制器中来破坏“约定优于配置”的想法(如果这甚至可以立即实现......)似乎我将不得不改变一些基本的Grails配置

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

对早期帖子的轻微修正:

坚持Grails中的惯例并不能阻止某人猜测gsp生活在哪里直接击中它(我只是尝试过,它有效)。

答案 1 :(得分:2)

好的,我在这里(或其他一个StackOverflow)没有看到完整的答案提供完整的有效结果,所以这就是我提出的:

首先,创建一个新的控制器:

grails create-controller gspForbidden

打开它,并将其添加到索引操作:

index = {
    response.status = 404
}

然后,打开grails-app/conf/UrlMappings.groovy并在static mappings闭包下添加:

"/grails-app/**.gsp"(controller:"gspForbidden")

这将重定向任何尝试直接向gspForbidden控制器查看GSP。反过来,该控制器只是呈现404 - 未找到文件的响应。关于这一点最好的事情是它完全被隐藏 - 没有任何东西表明GS路径是正确的,因此暴露应用程序设计的重要内容的可能性较小。

我反复试图弄清楚如何使用UrlMappings显示没有控制器的404,但我没有成功。如果您能想到办法,请告诉我。我宁愿在没有任何明确的控制器的情况下实现这一点。

答案 2 :(得分:1)

来自Spring Security Plugin文档:

package com.testapp
import grails.plugins.springsecurity.Secured

class SecureController {

   @Secured(['ROLE_ADMIN'])
   def index = {
      render 'Secure access only'
   }
}

您可以保护您的GSP页面,如上例所示。如果用户具有管理员权限,则安全注释将仅向用户提供访问权限。

有关更多信息,请参阅:

http://grails-plugins.github.com/grails-spring-security-core/docs/manual/

教程很好,作为一个开始。

答案 3 :(得分:0)

你实际上不需要在Grails中担心这一点。如果您遵循使用视图和控制器的约定,它将处理有关确保无法直接访问GSP页面的所有详细信息。

就与Spring Security的集成而言,如果您遵循推荐的模式之一(控制器中的URL安全性或注释),您应该没问题。