我希望Cookie会在用户会话到期时过期。它可以是纯粹的javascript,XPages-SSJS。
答案 0 :(得分:1)
在每个页面加载时,将cookie设置为当前时间+会话长度到期。
例如,如果您的会话是1小时,请在页面加载时添加:
var time = new Date().getTime(); // get the current time
time += 3600 * 1000; // add 1 hour to the current time
document.cookie = 'cookiedata=' + cookiedata + '; expires=' + time.toGMTString() + ';';
在此示例中,cookiedata
是您存储在Cookie中的任何内容。
答案 1 :(得分:0)
此XSnippet上的代码可以在Logout按钮后面使用。这将清除8.5.x服务器的sessionScope变量,但不会为9.0服务器清除: http://openntf.org/XSnippets.nsf/snippet.xsp?id=clear-session-whole-server
如果要清除R9上的sessionScope映射,则需要在地图上获取句柄,迭代键并清除它们,如此XSnippet中所示: http://openntf.org/XSnippets.nsf/snippet.xsp?id=clear-session-current-nsf
答案 2 :(得分:0)
以下是如何从服务器端修改会话cookie的到期日期的示例:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.beforeRenderResponse>
<![CDATA[#{javascript:var sessionId = facesContext.getExternalContext().getRequest().getSession().getId();
var response = facesContext.getExternalContext().getResponse();
var maxAge = facesContext.getApplication().getApplicationProperty("xsp.session.timeout", "30");
var maxAge = maxAge * 60;
response.addHeader("Set-Cookie","SessionID=" + sessionId + "; path=/; max-age=" + maxAge)}]]>
</xp:this.beforeRenderResponse>
</xp:view>
但请记住,设置cookie的过期会产生一些副作用,例如:如果您关闭浏览器,cookie将不会自动删除。因为cookie对整个服务器(path = /)有效,所以这也会影响在同一路径上运行的其他应用程序。