1

我正在 Grails 2.0.RC1 中开发一个项目,我希望能够将我的域对象的脚手架控制器和视图保存为“低级”,开发人员只能访问仍在修补的东西,而能够开发视图和控制器的生产版本(名称相似,尤其是控制器)。我想按原样保留它们,以便在对域层进行更新时重新生成它们,因此仅移动它们很可能不起作用。

我希望有一种方法可以做一些 UrlMapping 魔术,让我对“/mgr/book”的请求转到脚手架的 Book 控制器,但“/book”会转到我的生产控制器。我在文档中找不到有关如何为特定控制器组进行映射的任何内容(没有按名称指定每个控制器而不是 $controller 表示法)。

我的另一个想法是将我的领域层变成一个插件,然后创建一个单独的项目,该项目仅用于脚手架视图。这在投入生产之前会更容易删除,但似乎也需要更多工作,并且会引发在同一个盒子上同时运行两个 grails 应用程序的问题。

4

2 回答 2

1

如果您使用 Spring Security,您应该能够使用InterceptUrlMapRequestMap 实例来保护控制器 URL。

如果您的脚手架控制器仅用于脚手架(并且没有其他操作),那么您应该能够使用基本的Secured 注释来保护整个控制器。

然后你可以像平常一样使用脚手架,在登录后受到保护。

其他安全框架可能会提供类似的访问控制。

于 2011-11-04T06:37:51.560 回答
1

我会推动你按照你最后的想法去做。这也是我常用的做法:

  1. 为您的域模型和公共服务创建一个可嵌入的插件。这还包括常见的插件,比如 spring security 和其他东西。这也将减少您对主应用程序 btw 的依赖项解析时间。
  2. 为您的脚手架视图创建一个可嵌入的插件。将脚手架控制器的模板更改为需要身份验证和管理员组。
  3. 您的主应用程序使用这两个插件。

这使您的主应用程序保持干净和简单,您仍然可以根据需要重新生成所有脚手架视图和控制器。至少 Eclipse STS 热部署仍然有效!

然而,目前还没有简单的解决方案可以通过 URL 分离您的脚手架控制器。

于 2011-11-04T11:16:06.433 回答