【问题标题】:Make Grails action available only for includes使 Grails 操作仅可用于包含
【发布时间】:2014-05-07 09:21:32
【问题描述】:

我有一个具有多个操作的 Grails 控制器。目前,所有操作都可用于用户调用(我可以从浏览器访问它们),即使是那些只能通过 g:include 标记调用的操作。我想限制从浏览器访问此类操作。我无法将操作标记为受保护,因为在这种情况下,我将无法将此操作包含在另一个控制器的视图中。

有没有在这种情况下如何封装动作的做法?

【问题讨论】:

  • 嗯,可能有很多方法可以做到这一点 - requestMappings 是其中之一 -grails-plugins.github.io/grails-spring-security-core/docs/… 但我需要 spring 安全插件,并且你设置角色。我正在使用它,它对我来说效果很好,但这并不意味着它会成为你的灵丹妙药。
  • 这是您要查看的部分:4.1 定义安全注释
  • 您认为使用安全插件处理可见性范围可以吗?我希望有类似 allowedMethods 属性的东西。它指定操作允许使用哪些方法。如果还可以完全禁止从外部访问操作,但使其可用于内部调用,那就太好了。
  • 如果我没记错,那么您需要一个只能在 gsp 中访问且不能从浏览器调用的操作。我说的对吗?
  • @Yuriy as user1690588 说 Taglibs 是要走的路,我误解了这个问题。

标签: grails groovy action


【解决方案1】:

“保护”动作不被 URL 访问的方法是不提供它们的 URL 映射。默认的 url 映射看起来像这样……

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
            // apply constraints here
        }

        // ...
    }
}

那个“/$controller/$action?/$id?(.$format)?”映射对于简单的 crud 应用程序和演示非常方便,但对于任何实质性的应用程序,您几乎总是应该删除它。没有它,只能访问您明确公开的操作。

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多