登录后重定向?

Mul*_*one 6 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
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

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

在我的代码中它一直工作到第3点,但我错过了4.

任何提示?

Dan*_*ser 6

这实际上非常简单.只是

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

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

def targetURI = request.forwardURI - request.contextPath
Run Code Online (Sandbox Code Playgroud)