Grails安全问题与搜索引擎优化
-
22-08-2019 - |
题
我正在尝试构建一个依赖于当前 gsp 页面来调用操作的控制逻辑,是否有一个标签或会话方法可以用来识别当前的 gsp 页面
我想限制对除注册和登录之外的所有 GSP 的访问,因此,如果用户打开任何其他 GSP,他将被重定向到注册页面,并且他还可以导航到登录页面。
我试图实现的逻辑是这样的,如果 current_Page 是 login.gsp 或 singup.gsp 那么不执行任何其他操作重定向到注册 //用户可以导航到登录页面也没有问题
我想在主布局中添加此逻辑,以便在所有应用程序域中实现它。
我想知道是否有其他方法可以使用 RequestmapController 或 UrlMappings 来执行此操作?
任何有 springMVC 经验的人都可以提供帮助,因为 Grails 构建在 SpringMVC 之上,而 SpringMVC 又构建在标准 servlet 框架之上!
笔记:我正在使用 Acegi 插件
评论:该应用程序如何对 SEO 友好(即Google 索引)实施了这种类型的安全机制吗?
解决方案
编辑:抱歉,我误解了你的问题。我以为您正在寻找 Requestmaps 的替代品。这就是为什么我最初建议 使用注释保护控制器。
如果您想使用 Requestmaps,您可以执行以下操作:
创建一个新的 Requestmap,如下所示:
网址模式=/login/**
角色=IS_AUTHENTICATED_ANONYMOUSLY
要限制对网站其余部分的访问,请创建另一个与所有 url 匹配的 requestmap 条目:
网址模式=/*/**
角色=ROLE_USER
(您可以使用任何您喜欢的其他角色)
IS_AUTHENTICATED_ANONYMOUSLY
意味着任何人都可以访问匹配的 URL。第一个规则更具体,因此应该覆盖第二个更通用的规则。
你可以看看 AcegiSecurity 插件 - 保护 URL 了解更多信息。
关于网站的SEO。据我所知,搜索引擎无法访问需要身份验证的网站。这就是为什么像 Experts Exchange 这样的网站使用 狡猾的伎俩 被谷歌索引。
您可以选择授予匿名用户读取权限,同时需要登录才能写入(就像 SO 所做的那样)。这将允许您的网站被搜索引擎机器人索引。
我希望这有帮助!