我正在使用ColdFusion 9 coldfusion.runtime.SessionTracker
使用以下代码监控当前登录的用户。
app = application.getApplicationSettings().name;
sessiontracker = createObject("java","coldfusion.runtime.SessionTracker");
sessionCollection = sessionTracker.getSessionCollection(app);
返回struct
jsessionid
个jsessionid
以及所有当前活动会话的会话变量。
是否有可能强制会话结束,因为{{1}}有效地迫使用户退出?
谢谢,
理查德
答案 0 :(得分:2)
因此,当用户登录时,我在其会话中设置了user
结构,以便删除其登录状态。使用sessionTracker
我可以获取特定用户的会话,只删除当前会话中的user
结构。
app = application.getApplicationSettings().name;
sessiontracker = createObject("java","coldfusion.runtime.SessionTracker");
sessionCollection = sessionTracker.getSessionCollection(app);
userSession = sessiontracker.getSession(app, sessionID));
structDelete(userSession, "user");
不确定这是否是最佳方式,但它似乎对我有用。希望它能帮到人们。
答案 1 :(得分:0)
您是否尝试过在application.cfc中使用onSessionEnd?因为我们可以在注销过程中手动触发它,或者如果用户关闭浏览器或者其工作正常,它将自动触发。这就是我们使用它的方式。
在application.cfc中,我们触发onSessionEnd并触发logout函数,该函数也在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>
希望这有帮助