session - 如何在 session 结束时运行查询?

标签 session coldfusion session-management coldfusion-2016

我有应该在 session 结束时运行的查询。如果有与用户帐户相关联的记录,那么我想删除该记录。我使用 session 范围来存储用户 ID。一旦用户手动注销或他们的 session 超时,此查询应该运行。这是示例:

public void function onSessionEnd(required struct sessionScope, struct applicationScope={}) {
    local.qryTest = new Query();
    local.qryTest.setDatasource("#arguments.Application.dsnWriteDelete#");
    local.qryTest.setSQL("DELETE Locked WHERE RecID = :RecID");
    local.qryTest.addParam(name="RecID",value="#SESSION.userID#",cfsqltype="cf_sql_integer");
    qryTest.execute();

    return; 
} 

我在我的应用程序中使用 J2EE session 。以下是用户手动注销时结束 session 的方式:
<cffunction name="LogOut" access="remote" output="yes" returnformat="JSON">
        <cfset local.fnResults = structNew()>

        <cfif structKeyExists(SESSION.AccountInfo, "AccountID")>
            <cftry>
                <cfset local.temp = getPageContext().getSession().invalidate()>
                <cfset local.fnResults = {status : "200"}>

                <cfcatch type="any">
                    <cfset local.fnResults = {status : "400", message : "Error! Please contact your administrator."}>
                </cfcatch>
            </cftry>
        <cfelse>
            <cfset local.fnResults = {status : "400", message : "Error! Please contact your administrator."}>
        </cfif>

        <cfreturn fnResults>
    </cffunction>

我不确定 onSessionEnd 是否与 J2EE 有任何不同,但我上面的代码永远不会从数据库表中删除记录。我不确定我的代码是否有问题,或者这在 session 结束时无法实现。

最佳答案

session范围在内部不可用 OnSessionEnd() .您必须改用参数名称,即 arguments.sessionScope

However, if user logs out manually then onSessionEnd is not triggered. Do you know if it's possible to manually trigger onSessionEnd int [t]hat case?



从技术上讲是的,尽管将注销逻辑放在组件中然后从两个位置(OnSessionEnd 和手动注销脚本)调用适当的方法可能更有意义。

关于session - 如何在 session 结束时运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52046264/

相关文章:

php - 使用 PHP 和 MySQL 创建成员(member)个人资料页面

php - 使用 jquery 创建 session ?

JavaScript 函数 : Add CSS Class if session variable not equal to X

php - 用于更新 session 的 Jquery 登录头不起作用

ColdFusion 包括

hibernate - 管理 hibernate session

spring-security - 如何在redis中存储spring security session 信息?

javascript - 为什么 FB.login 不删除注销 cookie?

coldfusion - 迁移到负载平衡环境是否需要更改代码级别?

web-services - 如何创建使用 WS-Security 的 ColdFusion Web 服务客户端?