由于我在grails应用程序中使用了csrf,我通过在withForm{...}.invalidToken{....}
下封装我的操作逻辑来实现,同时我还添加了一个属性:{{1在gsp。{/ p>中的g:formRemote useToken="true"
标记下
问题是,我总是在提交时进入g:formRemote
块,因此我的表单没有被保存。
我应该如何使其正常工作?
示例:
invalidToken{...}
gsp ex:
def action = {
withForm{
......
}.invalidToken{
println "Invalid Token code"
}
}
答案 0 :(得分:0)
useToken
不支持
formRemote
支持的属性为:
* @attr name REQUIRED The form name
* @attr url REQUIRED The url to submit to as either a map (containing values for the controller, action, id, and params) or a URL string
* @attr action The action to execute as a fallback, defaults to the url if non specified
* @attr update Either a map containing the elements to update for 'success' or 'failure' states, or a string with the element to update in which cause failure events would be ignored
* @attr before The javascript function to call before the remote function call
* @attr after The javascript function to call after the remote function call
* @attr asynchronous Whether to do the call asynchronously or not (defaults to true)
* @attr method The method to use the execute the call (defaults to "post")
随着说。您可以继续使用控制器中的withForm
并使用jQuery或其他JS库实现表单提交并发送令牌。请看一下这个问题:Grails - Is there a recommended way of dealing with CSRF attacks in AJAX forms?
我还建议您继续使用formRemote
之类的标签。我假设你至少使用Grails 2.x.如果您希望将来迁移到Grails 3.x,则不推荐使用与Ajax相关的标记。
希望这有帮助。