防止Grails控制器中的方法被暴露为动作
我正在
Getting Started with Grails,Second Edition by Scott Davis & Jason Rudolph中阅读并处理这些例子.
这本书是用Grails 1.2编写的. 他们有一个代码示例,它们创建一个由beforeInterceptor调用的debug()方法,并解释说,由于debug()是一种方法,它不会通过URL向用户公开.他们解释说,封闭作为控制器操作暴露给最终用户,但方法不是. 我也看到了Grails 1.3 documentation,他们暗示了一个常规的方法: def auth() { ... } 被视为私有的,因为它是一种方法,而不是封闭. Grails 1.3是如此. 但是,从Grails 2.0.0,Controller Actions can be implemented as both methods and closures开始. 这导致我想知道(并尝试找出)一种复制在Grails 2.0.0中可用的功能的方法,以便在Controller中创建一个不会暴露给最终用户的方法. 我想到了两种可能的方法,并且想知道哪些是更好的风格/实践,为什么? >将访问者设置为私有,即private def auth() static allowedMethods = [save: "POST",update: "POST",delete: "POST",auth: ""] 这两种方法似乎都能达到预期的效果.然而,第一种方法给出了HTTP错误代码404,第二种方法给出了HTTP错误代码405. 有人知道哪种方法会更好吗?另外还有其他办法,还是有这样做的“最佳做法技巧”? 解决方法
在Grails 2.0中,任何标记为私有或受保护的方法都不被视为动作.
以这种方式标记方法对于维护的原因将更加翔实,因为在方法声明中可以看到该方法是否可操作,而不必回头看看allowedMethods变量.此外,如果将其声明删除或未添加到allowedMethods,则不可访问的方法将不会被意外地访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |