Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除coldfusion服务器上的所有会话_Coldfusion_Coldfusion 9_Coldfusion 2016 - Fatal编程技术网

删除coldfusion服务器上的所有会话

删除coldfusion服务器上的所有会话,coldfusion,coldfusion-9,coldfusion-2016,Coldfusion,Coldfusion 9,Coldfusion 2016,是否有一种方法可以删除coldfusion服务器上特定应用程序的所有当前会话。我想强制所有用户更新他们的会话变量并添加新的会话变量 我想到了类似的事情 <Cfset applicationStop()> 但我不确定它是否会删除所有会话。即使如此,如果它这样做了,我仍然需要阻止它删除所有应用程序的所有会话。我只想清除1个应用程序的所有会话,并强制该网站/应用程序上的所有用户在application.cfc中执行OnSessionStart。I u不使用单一登录方法,然后对每个应用程序

是否有一种方法可以删除coldfusion服务器上特定应用程序的所有当前会话。我想强制所有用户更新他们的会话变量并添加新的会话变量

我想到了类似的事情

<Cfset applicationStop()>

但我不确定它是否会删除所有会话。即使如此,如果它这样做了,我仍然需要阻止它删除所有应用程序的所有会话。我只想清除1个应用程序的所有会话,并强制该网站/应用程序上的所有用户在application.cfc中执行OnSessionStart。

I u不使用单一登录方法,然后对每个应用程序使用单独的application.cfm

当您注销一个应用程序时,只有一个应用程序会话将结束


我无法添加此评论,因为我没有权限。

如果您不使用单一登录方法,请为每个应用程序使用单独的Application.cfm

当您注销一个应用程序时,只有一个应用程序会话将结束


我无法添加此注释,因为我没有权限。

下面是Application.cfc的一个片段,允许您重置应用程序的所有会话变量。控制变量为application.loaded。您需要提供更改此变量值以强制重新加载会话的代码。当您的代码将application.loaded设置为now时,它的日期/时间将比session.loaded更新,它将重置用户会话。本版本使用CF2016级CFML编写

这段代码更像是一个模板,您需要为实现修改它

Application.cfc:


当我为一个站点构建这种系统时,有一个奇怪的地方是;虽然调用了applicationStop,但会话未清除。当应用程序停止时,您可能会认为会话会被破坏,但事实并非如此。这就是我建立这个方法的原因。会话似乎与单个站点cookie绑定,并且独立于它们可能所在的应用程序。

下面是application.cfc的一个片段,它允许您重置应用程序的所有会话变量。控制变量为application.loaded。您需要提供更改此变量值以强制重新加载会话的代码。当您的代码将application.loaded设置为now时,它的日期/时间将比session.loaded更新,它将重置用户会话。本版本使用CF2016级CFML编写

这段代码更像是一个模板,您需要为实现修改它

Application.cfc:


当我为一个站点构建这种系统时,有一个奇怪的地方是;虽然调用了applicationStop,但会话未清除。当应用程序停止时,您可能会认为会话会被破坏,但事实并非如此。这就是我建立这个方法的原因。会话似乎与单个站点cookie绑定,并且独立于它们可能所在的应用程序。

因此applicationStop将清除为当前应用程序存储的所有会话?不会。因此applicationStop将清除为当前应用程序存储的所有会话?不会。applicationStop不会删除会议。有关如何删除会话的信息,请参阅此问题的答案-我认为applicationStop可能会工作,但实际上不会。提供的链接仅提供有关如何清除当前会话的信息。我的任务是清除所有用户的所有会话。将ColdFusion重新启动的时间安排为给最少用户带来不便的时间。applicationStop不会删除会话。有关如何删除会话的信息,请参阅此问题的答案-我认为applicationStop可能会工作,但实际上不会。提供的链接仅提供有关如何清除当前会话的信息。我的任务是为所有用户清除所有会话。安排ColdFusion重新启动的时间,这将给最少的用户带来不便。与其说是一个真正的解决方案,不如说是一个变通方法,但目前为止,这是唯一一个不需要重新启动服务器的可行解决方案。与其说是一个真正的解决方案,不如说是一个变通方法,但目前唯一可行的解决方案是无需重新启动服务器。
component displayname="myApp" {
    this['Name'] = "myApp";
    this['ApplicationTimeout'] = CreateTimeSpan(0, 12, 0, 0);
    this['sessionTimeout'] = CreateTimeSpan(0, 0, 45, 0);
    this['SessionManagement'] = true;
    this['ClientManagement'] = false;
    this['SetClientCookies'] = true;

    public boolean function onApplicationStart() {
        // app variable for session scope refresh
        application['loaded'] = now();

        return true;
    } // onApplicationStart()

    public void function onSessionStart() {
        // this individual session loaded flag
        session['loaded'] = now();

        return;
    } // onSessionStart()

    public boolean function onRequestStart(required string targetPage) {
        // if the applicaiton.loaded variable is more recent, force this session to be reset
        if (application.keyExists("loaded") && session.keyExists("loaded") && application.loaded > session.loaded) {

            // pick one or more of these FOUR options to reset the session.

            // call the J2EE method of invalidating a session
            getPageContext().getSession().invalidate();

            // OR use the CF method
            sessionInvalidate();

            // OR clear the session struct
            session.clear();

            // OR clear important session variables that tell your app that the user is logged out, this will need to change based on YOUR implementation
            session['user'] = "";

            // if you clear the session with a form of invalidate(); onSessionStart() should be called to reset the session.loaded var.  It can also be set here.
            session['loaded'] = now();

            // redirect to the target page, which should send the user back to the login page because the session was reset
            location(url=arguments.targetPage, addtoken=false);
        }

        return true;
    } // onRequestStart()

} // component