session - 如果我使用 J2EE session ,我是否需要 ColdFusion session ?

标签 session jakarta-ee session-cookies coldfusion-10 session-management

我最近创建了一个新系统。在这个项目中,我能够在 ColdFusion 中使用 session 管理。当我开始深入研究 session 及其工作原理后,Adobe 文档中几乎没有什么内容不是很清楚。有整篇关于 J2EE 与 ColdFusion session 的文章,其中指出建议使用 J2EE,因为它更安全。 如果我使用 J2EE,我是否仍然有义务使用 ColdFusion session ?

在我的 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 后,我的 session 范围显示:

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

CFIDCFTOKENsessionid。我想知道如果 sessionid 存在,我是否必须保留 CFIDCFTOKEN ?如果没有,如何删除或关闭它们?

在我的 AppFunctions.cfc 中,我有两个 cffunctions。一个处理注销过程,另一个处理 session 超时过程。一旦用户不再活跃,这两者都应该结束 session 。我发现有两个不同的函数可以做到这一点。

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

但是,如果我在应用程序中启用了两个 session ,在这种情况下我将如何结束 session ?我应该同时使用这两种方法还是有其他方法可以做到这一点?

Adobe 文档对此没有很好的解释。如果有人知道处理此问题的好方法,请告诉我。由于这是单页应用程序,我还想知道如何保护我的 Ajax 调用。每次用户发送请求时,我想检查他们的 session 和凭据是否有效。

最佳答案

通过评论进行提升以提高可见度

您的 SetClientCookies 是否等于 true/yes?如果是这样,我相信这将创建 CFID 和 CFTOKEN cookie。您不需要该选项来进行 session 管理 - 它用于客户端管理。

另一种可能性是您拥有本地 cookie,其中包含之前测试中的 cookie。删除您的浏览器 cookie,将 SetClientCookies 设置为 no,然后重试。

关于session - 如果我使用 J2EE session ,我是否需要 ColdFusion session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49143685/

相关文章:

javascript - 在 Javascript 中设置 Cookie 然后 window.location.href 不发送更新的 cookie

php - 如何在 PHP 中的不同 session 之间创建共享对象?

java - 如何在远程 ejb 查找期间设置超时?

java - 如何使用 Java Servlet 维护 session

java - 登录和注销的误区

jakarta-ee - 如何在不注入(inject) HttpServletRequest 的情况下获取 JAX-RS 资源类中的客户端 IP 地址?

javascript - 为什么它没有被调用时却添加了

php - 使用 PHPSESSID 值访问 session 数据

php - 是否可以像 PHP 的 Python 中那样将 session 作为变量传递?

Php 和 mySQL 测试