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

Dan*_* T. 5 coldfusion redirect model-glue coldfusion-9

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

<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>
Run Code Online (Sandbox Code Playgroud)

登录页面有一个链接到action.login事件处理程序的表单,如果登录成功,它将重定向到用户的主页,如果不是,则重新显示登录页面:

<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>
Run Code Online (Sandbox Code Playgroud)

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

Sco*_*roz 5

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

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