我有一个带有多个动作的Grails控制器。现在,所有操作都可用于用户调用(我可以从我的浏览器访问它们),甚至是那些只能使用g:include标签调用的操作。我想限制从浏览器访问此类操作。我无法将操作标记为受保护,因为在这种情况下,我将无法在另一个控制器的视图中包含此操作。
是否有任何练习如何在这种情况下封装动作?
答案 0 :(得分:2)
“保护”操作不能通过URL访问的方法是不向它们提供URL映射。默认的url映射看起来像这样......
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
// ...
}
}
那个“/$controller/$action?/$id?(.$format)?”映射对于简单的crud应用程序和演示很方便,但对于任何实际的应用程序,你几乎总是应该删除它。没有它,只有您明确公开的操作才可以访问。