我有一个cfwindow页面,要求用户登录才能查看页面上的内容。目前的问题是,如果用户登录到站点,然后什么都不做,会话超时,我无法想到在用户打开窗口时将窗口的父级重定向到登录屏幕。 / p>
到目前为止,我已尝试使用cflocation,但无法指定应重定向的容器(即窗口中的页面正在重定向,而不是Windows父级)。我还考虑过使用一个基于会话的隐藏输入,然后使用Body onLoad事件进行检查,但目前这与页面的设置方式无关。
我的最后一个选项是在加载窗口时检查会话变量,然后在用户未登录时关闭它,这将导致父级刷新并重定向到登录。但是我无法在不使用javascript的情况下找到关闭cfwindow的方法。
答案 0 :(得分:3)
您可能想要做的是 - 当您检测到会话超时时,而不是执行<cflocation/>
;您想要输出指示会话已过期的HTML内容,以及JavaScript重定向,如下所示:
Your session has expired. Please log in again.
<script type="text/javascript">
document.location.href = '/login.cfm';
</script>
<cfabort/>
其次:
我无法在不使用javascript的情况下找到关闭cfwindow的方法。
为什么会出现问题? CFWindow是使用JavaScript创建的。甚至可以helper methods关闭它:
ColdFusion.Window.hide('{windowNameHere}');