我正在尝试构建一个依赖于当前gsp页面来调用动作的控制逻辑,是否有可用于识别当前gsp页面的标记或会话方法
我想限制除了单身和登录之外的所有GSP的访问权限,因此如果用户打开任何其他gsp,他将被重定向到注册页面,他也将能够导航到登录页面。
我试图实现的逻辑是这样的,如果current_Page是login.gsp或singup.gsp然后什么都不做重定向到注册//用户可以导航到登录页面而没有任何问题
我想在主布局中添加此逻辑,以便在所有应用程序域中实现。
我想知道是否有使用RequestmapController或UrlMappings的替代方法吗?
任何具有springMVC经验的人都可以提供帮助,因为Grails构建在SpringMVC之上,而SpringMVC又构建在标准的servlet框架之上!
注意:我正在使用Acegi插件
备注:如何实施这种类型的安全机制,应用程序是否适合搜索引擎优化(即谷歌索引)?
答案 0 :(得分:3)
您应该阅读:link text
使用ACEGI插件的教程:link text
后者是我的方式。它允许您按角色设置角色并保护“页面”和URL。它还包括一种创建用户并将其分配给角色的方法。
要安装ACEGI grails插件,请执行:grails install-plugin acegi
答案 1 :(得分:3)
修改:抱歉,我误解了你的问题。我以为你在寻找Requestmaps的替代方案。这就是我最初建议securing the controllers with annotations.
的原因如果您想使用Requestmaps,您可以执行以下操作:
创建一个如下所示的新Requestmap:
网址格式= /login/**
角色= IS_AUTHENTICATED_ANONYMOUSLY
要限制对网站其余部分的访问,请创建另一个匹配所有网址的请求图条目:
网址格式= /*/**
Role = ROLE_USER
(您可以使用您喜欢的任何其他角色)
IS_AUTHENTICATED_ANONYMOUSLY
表示任何人都可以访问匹配的网址。第一条规则更具体,因此应覆盖第二条更一般的规则。
您可以查看AcegiSecurity Plugin - Securing URLs了解详情。
关于网站的SEO。 AFAIK搜索引擎无法访问需要身份验证的网站。这就是为什么像Experts Exchange这样的网站使用sly tricks来获取Google索引的原因。
您可以选择为匿名用户提供读取权限,同时需要登录进行写入(如SO所做的那样)。这将允许您的网站被搜索引擎机器人编入索引。
我希望这有帮助!
答案 2 :(得分:1)
您需要Spring安全插件。执行此操作的最佳方法不是在您的GSP中,而是在所有Web请求上使用过滤器。这将为您提供Requestsps和UrlMappings GrailsNewbie提到的。