0

我有一个脚本:

<cfscript>
     gf = createObject('component','com.general');
     gf.checkIpBlocked();
</cfscript>

我想触发 onSessionStart。

我在 /siteID/includes/themes/myTheme/eventHandler.cfc 中添加了一个 onSessionStart。但是会话开始永远不会触发。我知道有一些管理会话,因为我打开管理员,登录然后关闭浏览器,重新打开它我被迫再次登录。

如果我设置一个会话变量,关闭浏览器,并且 session.testVar 永远不会消失,并且似乎会在很长一段时间内保持初始值。

我不想管理 mura 用户或任何我只是想在“会话”中第一次设置会话变量。在典型的 application.cfc 中,这很容易。

任何见解都值得赞赏。

4

2 回答 2

2

不幸的是,这是一个错误。但是,要记住的一件事是 onSiteSessionStart 是不可靠的,因为它仅在请求中定义了 siteID 时才会触发。例如,如果您要进入管理员并被要求登录,您的会话将已经开始,并且不会有 siteID。

现在我会尝试使用 onSiteRequestStart 来代替变量。

function onSiteRequestStart($){
    param name="session.ipChecked" default=false;
    if(!session.ipChecked){
        var gf = createObject('component','com.general');
        gf.checkIpBlocked();
        session.ipChecked=true;
    }
}

关于我们的文档,我们提供了三本 Mura 6 书籍,可从 Lulu 下载印刷版和数字版

并且还在努力创建一种系统的方式,将这些书籍的内容发布到我们的支持网站上,我们希望 MuraCon 在 9 月 30 日完成这些内容。这样我们所有的文档都将保持更新和同步。

于 2013-08-09T16:43:32.347 回答
1

Mura 文档声明应用程序事件实际上是onGlobalSessionStart和/或onSiteSessionStart

应用程序事件

onApplicationLoad       onSiteSessionStart
onGlobalSessionStart    onSiteSessionEnd
onSiteMissingTemplate   onSiteError
onGlobalError           onBeforeAutoUpdate
onAfterAutoUpdate       onGlobalThreatDetect

请注意,开始的事件是onGlobal在每个 Mura 实例的基础上定义的。

村文档

于 2013-08-08T18:59:19.047 回答