4

我正在使用 ColdFusion 9coldfusion.runtime.SessionTracker使用以下代码监视当前登录的用户。

app = application.getApplicationSettings().name;
sessiontracker = createObject("java","coldfusion.runtime.SessionTracker");
sessionCollection = sessionTracker.getSessionCollection(app);

它为所有当前活动的会话返回 a structofjsessionid和会话的变量。

鉴于我jsessionid有效地强制用户退出,是否可以强制会话结束?

谢谢,

理查德

4

2 回答 2

2

因此,当用户登录时,我user会在他们的会话中设置一个结构,以便删除他们的登录状态。使用sessionTrackerI 可以获得特定用户的会话,只需删除user他们当前会话中的结构。

app = application.getApplicationSettings().name;
sessiontracker = createObject("java","coldfusion.runtime.SessionTracker");
sessionCollection = sessionTracker.getSessionCollection(app);

userSession = sessiontracker.getSession(app, sessionID));

structDelete(userSession, "user");

不确定这是否是最好的方法,但它似乎对我有用。希望它可以帮助人们。

于 2013-02-09T15:39:18.713 回答
0

您是否尝试过在 application.cfc 中使用 onSessionEnd?因为我们可以在注销过程中手动触发它,或者如果用户关闭浏览器或其他任何效果很好的东西,它会自动触发。这就是我们使用它的方式。

在 application.cfc 中,我们触发 onSessionEnd 并触发同样在 application.cfc 中的注销功能,并执行所有清理工作和日志记录。

<cffunction name="OnSessionEnd" access="public" returntype="void"
                 output="false" hint="Fires when the session is terminated.">
        <cfargument name="SessionScope" type="struct" required="true" />
        <cfargument name="ApplicationScope" type="struct"
                                  required="false" default="#StructNew()#" />
        <cfargument name="timedOut" type="boolean" required="false" default="true">
                <cfinvoke thisSessionScope="#SessionScope#"
                      timedOut="#arguments.timedOut#" method="logout">
                </cfinvoke>
            <cfset structClear(arguments.sessionScope) >
         <!--- Return out. --->
        <cfreturn />
    </cffunction>

希望这可以帮助

于 2013-02-03T01:25:41.973 回答