登录后重定向?

时间:2010-06-15 16:03:03

标签: grails redirect login

在我的Grails应用程序中,我有几个简单的安全过滤器(请注意它只是一个原型,而不是商业应用程序:

securityCheckFilter(controller:'overview', invert:true) {
            before = {
                if(!session?.gaSession?.gaUser) {
                    flash.message = "You are not authorised to see this page. Please login."
                    redirect(controller:'overview',action:'login')
                    return false
                }
                return true
            }
        }

这意味着,除了处理登录/注册的控制器“概述”之外,所有其他控制器都需要身份验证。 问题是我想实现这个典型的流程:

(1)用户尝试受保护的网址 (2)重定向登录 (3)成功登录 (4)重定向到 url

在我的代码中,它一直有效,直到第3点,但我错过了4。

任何提示?

1 个答案:

答案 0 :(得分:6)

实际上很容易。刚

  • 将目标URI(从您问题中的第1点)作为参数提交到登录操作/视图
  • 确保您的登录表单将此参数转发给身份验证操作(例如,通过隐藏字段)
  • 在身份验证操作中,如果登录成功,则只需重定向到此URI

要获取目标URI(在过滤器中),只需从转发URI中删除上下文路径:

def targetURI = request.forwardURI - request.contextPath