1

实际上它与身份验证有关。我的场景如下:我有一个主页,用户可以在其中看到一些新闻和其他内容,也有文本字段供用户输入登录信息并登录。现在如果用户未登录,我想限制他查看新闻的详细信息。并且每当用户单击任何链接时,它都会收到警报(您需要登录)。

模型胶水.xml:

<event-handler name="modelglue.OnRequestStart">
    <broadcasts>
        <message name="checkAuthentication" />
    </broadcasts>
    <results>
        <result name="invalid" do="homePage" />
    </results>
    <views />
</event-handler>

*checkAuthentication() 检查用户是否登录。如果无效(未登录),它会重定向到“主页”事件。

现在的问题是,当用户单击任何链接时,会检查身份验证。如果真实(登录),则调用相应的事件并执行操作。但在无效(未登录)的情况下,它会转到“主页”事件,执行操作,但也会执行其他请求(例如,如果事件是 showNews) 新闻也会显示,我不想这样做。

谁能告诉我如何在 showNews 事件之前停止执行。即刚刚homePage 事件完成。

提前谢谢

4

1 回答 1

0

在“checkAuthentication”的消息侦听器中,您将需要添加某种不需要身份验证检查的事件白名单。应该执行以下操作(检查事件名称是否真的在事件对象中称为“EventName”)

<cfset var eventName = arguments.event.getValue("EventName") />
<cfset var whitelistedEvents = "homePage,otherPage,etc" />
<cfif UserIsUnAuthenticated AND NOT ListContainsNoCase(whitelistedEvents,eventName)>
-- do your redirect in here as this is an unauthenticated user trying to access a non-whitelisted event
</cfif>

希望这可以帮助。

于 2009-11-10T09:27:00.057 回答