重置ColdFusion会话变量(CFTOKEN、CFID、JSESSIONID)最有效的方法是什么?
下面问题的结论是,在从http切换到https后重建会话令牌是一个好主意 问题是,最有效的方法是什么重置ColdFusion会话变量(CFTOKEN、CFID、JSESSIONID)最有效的方法是什么?,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,下面问题的结论是,在从http切换到https后重建会话令牌是一个好主意 问题是,最有效的方法是什么 structDelete(session, "CFTOKEN"); structDelete(session, "CFID"); structDelete(session, "JESSIONID"); 将从结构中删除键,但我不确定您是否会在CF“重新应用”这些变量到会话时遇到问题。这是说起来容易做起来难的事情之一 我已经有一段时间没有对此进行研究了,因此请理解您可能需要对其进行故障排除 对于
structDelete(session, "CFTOKEN");
structDelete(session, "CFID");
structDelete(session, "JESSIONID");
将从结构中删除键,但我不确定您是否会在CF“重新应用”这些变量到会话时遇到问题。这是说起来容易做起来难的事情之一 我已经有一段时间没有对此进行研究了,因此请理解您可能需要对其进行故障排除 对于JavaEE会话,我认为这更容易一些,因为您可以在会话上调用invalidate()。但不幸的是,这只是战斗的一半。你确实有几个问题要解决。是的
希望这会有所帮助在执行了一系列测试之后,终止会话的最有效方法似乎是使用值now使jsessionid cookie过期
<cfcookie name="jsessionid" expires="now"/>
这显然假设使用J2EE会话变量
若并没有使用J2EE会话变量,那个么会话变量和客户端变量似乎都是从CFID和CFTOKEN cookie变量中键入的。这意味着终止会话的唯一方法是使用now值使这些cookie过期
<cfcookie name="cftoken" expires="now"/>
<cfcookie name="cfid" expires="now"/>
此方法还将使客户端变量无效
在不使用J2EE会话变量的情况下,在不杀死客户端变量的情况下杀死会话的最佳方法似乎是创建一个在浏览器关闭时过期的会话cookie,并在application.cfc request processing下检查该值。如果值不存在,请清除会话结构。这只会从客户端结构中删除值。您还需要从cookie中删除它们。这一点很好。无论如何,我更喜欢杰森的答案,而不是我自己的答案DHey Jason,在CFHTTP端,响应不是来自服务器到服务器,而不是来自客户端吗?在这种情况下,客户端将无法设置新会话。和往常一样,Ben Nadel对如何强制结束会话()有一些想法,这就是第6步的目的。您从CFHTTP请求(服务器到服务器请求)收集cookie,然后手动将它们设置回浏览器。啊,明白了:),这很有意义。