如果我使用J2EE会话,我是否需要ColdFusion会话?

时间:2018-03-07 03:35:24

标签: session java-ee session-cookies coldfusion-10 session-management

我最近创建了一个新系统。在这个项目中,我能够在ColdFusion中使用会话管理。一旦我开始深入研究会话以及它们如何工作,那么在Adobe文档中很少有一些不太清楚的事情。有关J2EE和ColdFusion会话的整篇文章都说J2EE被认为更安全。 如果我使用J2EE,我仍然有义务使用ColdFusion会话吗?

在我的Application.cfc中,我有以下设置:

<cfset THIS.sessionManagement = true>
<cfset THIS.applicationTimeout = CreateTimeSpan(0,1,0,0)>
<cfset THIS.sessionTimeout = CreateTimeSpan(0,0,30,0)>

在ColdFusion Administrator中启用J2EE后,我的会话范围显示:

struct
loggedin    false
sessionid   0AB2908F874E5BE7C792D0AA6B3847B2.cfusion
urltoken    CFID=8321&CFTOKEN=86134751&jsessionid=0AB2908F874E5BE7C792D0AA6B3847B2.cfusion

CFIDCFTOKENsessionid。我想知道如果有CFID,我必须保留CFTOKENsessionid吗?如果没有,它们如何被移除或关闭?

在我AppFunctions.cfc我有两个cffunctions。一个处理注销过程,另一个处理会话超时过程。一旦用户不再活动,这两个都应该结束会话。我发现了两个不同的功能。

  • sessionInvalidate()将结束/清除ColdFusion会话
  • getPageContext().getSession().invalidate()将结束J2EE会话

但是,如果我在我的应用程序中启用了两个会话,那么在这种情况下我将如何结束会话?我应该使用这两种方法还是有其他方法来做到这一点?

Adob​​e文档没有很好地解释这一点。如果有人知道处理这个的好方法,请告诉我。由于这是单页面应用程序,我也想知道如何保护我的Ajax调用。每次用户发送请求时,我都想检查他们的会话和凭据是否有效。

1 个答案:

答案 0 :(得分:3)

从评论中推广以提高可见度

你有SetClientCookies等于真/是吗?如果是这样,那将创建我认为的CFID和CFTOKEN cookie。您不需要该选项进行会话管理 - 它适用于客户端管理。

另一种可能性是,您在之前的测试中使用了本地cookie。删除浏览器Cookie,将SetClientCookies设置为否,然后重试。