一般来说,这就是allowedMethods
地图的用途;当您使用generate-controller
orgenerate-all
脚本时,您的控制器将具有以下内容:
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
并且您可以根据哪些操作需要 POST 以及哪些操作允许 GET 从地图中添加或删除操作名称。您可以将其放在基类中,并允许子类重用基类定义并使用以下方法添加到它:
static allowedMethods = BaseController.allowedMethods + [createUser: "POST"]
这要求您扩展该基类,因此很容易忘记。所以更好的方法可能是使用过滤器;您可以使用create-filters
命令创建一个。
因此,例如,您可以使用这样的过滤器,其中包含要禁止的明确操作列表:
def filters = {
postOnly(controller:'*', action: 'save|update|delete') {
before = {
if (!request.post) {
response.sendError(405)
return false
}
true
}
}
}
除了管道分隔的动作名称(您可以对控制器名称执行相同操作)之外,您还可以使用通配符,因此您可以添加以“create”开头的任何动作:
postOnly(controller:'*', action: 'save|update|delete|create*') {