【问题标题】:Questions about grails filters关于 grails 过滤器的问题
【发布时间】:2010-06-05 19:00:09
【问题描述】:

基本上我有 2 个关于 grails 过滤器的问题。

  1. 根据 grails 文档,您可以在过滤器中执行以下操作
if (userId != paramsUserId) {
    flash.message = "You can only modify yourself"
    redirect(action: 'list')
    return false
}

如果上述条件为真,那么return语句将如何执行?

  1. 我可以在我的过滤器中重定向到某个也有重定向的操作吗?

【问题讨论】:

    标签: grails


    【解决方案1】:

    1 - 从过滤器返回 false 会阻止进一步的过滤器(以及如果它在前过滤器中的操作)执行。浏览器将获得 302 重定向并转到您要求重定向到的“列表”方法。

    http://grails.org/doc/2.3.7/guide/single.html#filterTypes

    2 - 是的。重定向到其他重定向的东西很好。对浏览器来说真的没关系。如果您在 firebug 中观看它,您会看到重定向的真正含义。当您重定向浏览器接收到 HTTP 状态代码为 302(“找到”)的响应时,此响应还包括浏览器接下来应该请求的 url(您要重定向到的东西,即“列表”的 url上例中的方法)。然后浏览器请求该 url,它的行为就好像它是第一个请求一样。

    这就是 flash 作用域如此有用的原因,flash 作用域中的东西在下一个请求之前一直存在,因此它们跨越重定向。

    【讨论】:

    • 对于一些 servlet 容器(如 Tomcat),您必须小心发送过多的重定向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多