Redirect 使用ColdFusion Model Glue,如何在登录后将用户重定向回其请求的页面?

Redirect 使用ColdFusion Model Glue,如何在登录后将用户重定向回其请求的页面?,redirect,coldfusion,coldfusion-9,model-glue,Redirect,Coldfusion,Coldfusion 9,Model Glue,我有一个安全事件类型,它将检查用户是否已登录,如果用户未登录,则会将其重定向到登录页面: <event-types> <event-type name="securedPage"> <before> <broadcasts> <message name="CheckLogin"/> </broadcasts>

我有一个安全事件类型,它将检查用户是否已登录,如果用户未登录,则会将其重定向到登录页面:

<event-types>
    <event-type name="securedPage">
        <before>
            <broadcasts>
                <message name="CheckLogin"/>
            </broadcasts>
        </before>
        <results>
            <result name="NeedLogin" do="page.login" redirect="true"/>
        </results>
    </event-type>
</event-types>

这段代码工作得很好,但我现在遇到的问题是,它将始终重定向到用户的主页,即使他们请求另一个页面。由于表单发布到action.login事件,并且结果
do
硬编码到
page.user.home
,我如何修改代码以跟踪用户最初请求的页面并将其重定向回那里?

在用于确定用户是否需要登录的逻辑中,您可以获取当前事件并将其存储在共享范围(如会话范围)中


然后,在成功登录后,只需调用event.forward()并传入该值。

以下是一般思路:

  • 无论运行何种方法/代码来“保护”您的页面,如果用户未登录,请获取他们试图访问的url,并在转发它们之前将其作为变量设置回viewstate。CGI范围将是您在这里的朋友,尤其是CGI.query\u字符串

  • 在登录表单上,在viewstate中检查此“returnEvent”变量,并将其设置为表单上的隐藏值(如果存在)

  • 成功后,在注册/登录过程中的某个地方,检查此“returnEvent”变量,如果存在,则在上转发用户


  • 谢谢,这就是我最后要做的。
    <event-handler name="action.login">
        <broadcasts>
            <message name="Login"/>
        </broadcasts>
        <results>
            <result name="LoggedIn" do="page.user.home" redirect="true"/>
            <result name="NotLoggedIn" do="page.login"/>
        </results>
    </event-handler>