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