在没有会话范围的情况下使用的持久范围

时间:2015-03-13 13:15:20

标签: coldfusion coldfusion-9

我需要在持久范围内维护一个变量,直到用户会话处于活动状态。问题是应用程序不允许会话管理,因此无法更改。 我想在登录会话中仅向用户显示一条消息。除会话外我有什么选择,如果可能,除了使用DB。

2 个答案:

答案 0 :(得分:0)

这是一个很长的评论。它不会回答这个问题,但它可能会给提问者一些想法。

我编写并仍然维护一个将sesssion管理设置为false的ColdFusion应用程序。此应用程序在桌面应用程序中显示html内容 - 而不是Web浏览器。安全性由桌面应用程序处理。如果您可以登录该应用程序并且是适当类型的用户,则可以访问html内容。

在ColdFusion方面,必须处理某人发现网址并尝试使用网络浏览器访问网站的可能性。这完成了数据。桌面应用程序将UUID放入数据库并将其作为url变量发送。 ColdFusion检查UUID是否存在且是否足够新。如果该检查失败,则会向用户发送“羞辱”以尝试"页。这是在Application.cfc

的onRequestStart方法中完成的

其他相关变量从与UUID相同的数据库记录发送到ColdFusion,但它们可以想象也是url变量。 onRequestStart方法将这些变量复制到其他ColdFusion页面中使用的请求范围。

答案 1 :(得分:0)

您可以使用不使用 cfcookie 属性的 expires 设置会话 cookie。这会导致 cookie 在用户关闭浏览器时过期。您的 cookie 将指示消息是否已显示。

<cfif structkeyexists(cookie, "message_displayed") eq false>
     <cfcookie name="message_displayed" value="true"/>
     <p>Your Message Here</p>
</cfif>