2

我正在尝试构建一个控制逻辑,它依赖于当前的 gsp 页面来调用一个动作,是否有一个标签或会话方法可以用来识别当前的 gsp 页面

我想限制对除 singup 和登录之外的所有 GSP 的访问,因此如果用户打开任何其他 gsp,他将被重定向到注册页面,并且他也将能够导航到登录页面。

我试图实现的逻辑是这样的,如果 current_Page 是 login.gsp 或 singup.gsp 然后什么也不做重定向到注册 //用户可以导航到登录页面也没有问题

我想在主布局中添加这个逻辑,以便在所有应用程序域中实现它。

我想知道是否有使用 RequestmapController 或 UrlMappings 的替代方法?

任何有 springMVC 经验的人都可以提供帮助,因为 Grails 构建在 SpringMVC 之上,而 SpringMVC 又构建在标准 servlet 框架之上!

注意:我正在使用 Acegi 插件

备注:应用程序如何在实现这种安全机制的情况下对 SEO 友好(即 Google 索引)?

4

3 回答 3

3

您应该阅读以下内容:链接文本

以及使用ACEGI插件的教程:链接文字

后者是我要走的路。它允许您设置角色并按角色保护“页面”和 URL。它还包括一种创建用户并将其分配给角色的方法。

要安装 ACEGI grails 插件,请执行以下操作:grails install-plugin acegi

于 2009-05-19T06:52:07.053 回答
3

编辑:对不起,我误解了你的问题。我以为您正在寻找 Requestmaps 的替代品。这就是为什么我最初建议使用注释来保护控制器。

如果您想使用 Requestmaps,您可以执行以下操作:

  1. 创建一个新的 Requestmap,如下所示:
    URL pattern = /login/**
    Role =IS_AUTHENTICATED_ANONYMOUSLY

  2. 要限制对站点其余部分的访问,请创建另一个匹配所有 url 的 requestmap 条目:
    URL pattern = /*/**
    Role = ROLE_USER(您可以使用您喜欢的任何其他角色)

IS_AUTHENTICATED_ANONYMOUSLY意味着任何人都可以访问匹配的 URL。第一个规则更具体,因此应该覆盖第二个和更一般的规则。

您可以查看AcegiSecurity 插件 - 保护 URL以了解更多信息。

关于网站的SEO。AFAIK 搜索引擎无法访问需要身份验证的网站。这就是为什么像 Experts Exchange 这样的网站会使用狡猾的技巧来获得 Google 的索引。

您可以选择授予匿名用户读取权限,同时需要登录才能写入(就像 SO 一样)。这将允许您的网站被搜索引擎机器人索引。

我希望这有帮助!

于 2009-05-19T08:02:39.960 回答
1

您需要 Spring 安全插件。最好的方法不是在您的 GSP 中,而是对所有 Web 请求使用过滤器。这会给你提到的 Requestmaps 和 UrlMappings GrailsNewbie。

于 2009-05-19T01:59:05.263 回答