【问题标题】:Session variable not found找不到会话变量
【发布时间】:2021-04-19 10:42:22
【问题描述】:

很长一段时间以来,我都对 Session 变量有疑问。我正在寻找一些指针或方向来解决这个问题。我试图解释正在发生的事情,并且我知道所提供的信息不足以理解正在发生的事情,但我正在尝试解决这个问题,这让我发疯:-)

我有几个 Lucee Web 应用程序(Lucee:5.3.7.48),它们也可用作 Cordova 应用程序。错误消息通过电子邮件发送给我。每天我都会收到大约 100 条关于会话变量找不到的消息。

[APP] 是一个会话变量,在文件 index.cfm 中设置。

         <cfparam name="SESSION.auth.app" default="">

在第 592 行有类似 &lt;cfif session.auth.app is 1&gt;do something&lt;/cfif&gt;

我不想关注第 592 行,真正的问题是会话变量丢失/丢失。接下来发生的是用户被重定向到登录页面(login.cfm),因为会话丢失然后问题重复,这是一种循环。该应用程序有一个保存用户名/密码选项。

这一切都发生在应用程序在后台运行时,例如在后台运行的 Cordova 应用程序。我知道这一点是因为我在收到 20 条错误消息时联系了一位用户,他告诉我在出现错误消息时我没有使用该应用程序。

总之,我在用户使用 login.cfm 页面时对其进行测量。正如您在图片中看到的那样,3 月 16 日是使用高峰,这与所描述的问题有关。

我知道我没有提供太多有用的信息,但是有人可以给我一些指导如何解决这个问题吗?

4 月 14 日更新

我更改了会话变量的设置方式并遵循了反应中的建议。

在 application.cfc 我添加了:

<cffunction name="onSessionStart" access="public" returntype="void" output="false" hint="I fire when a new session begins.">
    <cfset SessionRotate()>
    <cfset SESSION.app = ''>
    <cfset SESSION.device = ''>
    <cfset SESSION.app_file_url = 'window.open'>
</cffunction>

重新启动 Lucee 以确保安全。但是还是一样的错误信息,APP不存在。经过一些额外的搜索,我发现:https://www.bennadel.com/blog/1535-coldfusion-session-is-always-created-even-if-onsessionstart-fails.htm

这可能是一个 Lucee 错误吗?你有更多的建议可以尝试吗?

【问题讨论】:

  • 您的cfparam 行相对于给出错误的行在哪里?只需在 OnSessionStart() 方法中的 Application.cfc 文件中初始化并设置变量。然后你知道它会一直在那里。 Lucee documentation
  • 这种情况只发生在随机客户端上吗?您是否能够在可以用作调试工具的设备上看到这种情况并重现问题以查看 cookie 变量、客户端请求标头、服务器响应标头?
  • 我的支持将您的声誉提高到三位数。你欠我一杯啤酒。
  • @Miguel-F cfparam 是 index.cfm 中的第一行之一,一直到第 592 行。我将检查 OnSessionStart,但这仍然是一个奇怪的问题。
  • @AndreasRu 它发生在不同环境的不同用户身上。用户代理是:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.75 还有 Mozilla/5.0 (iPhone; CPU iPhone OS 12_5_2 像 Mac OS X) AppleWebKit/605.1.15 (KHTML, 像 Gecko) 版本/12.1.2 Mobile/15E148 Safari/604.1 等等。问题是我不知道如何调试,我无法重现问题。我试过 FusionReactor,但没有用。

标签: coldfusion lucee


【解决方案1】:

在你的 onSessionStart 函数中,你能把它改成这个吗?

&lt;cfset session.auth = {}&gt;

&lt;cfset session.auth.app = ''&gt;

我看到您正在检查 &lt;cfif session.auth.app is 1&gt;do something&lt;/cfif&gt;,它应该定义了 session.auth 以使其正常工作。

我希望以上内容有所帮助。

另外,我很想知道你在屏幕上倾倒什么?

【讨论】:

    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    相关资源
    最近更新 更多