我正在进行基于SAML的身份验证,并希望我的用户在关闭浏览器时退出系统:我编写了以下浏览器端代码:
window.onbeforeunload =function(e){
deleteAllCookies();
var my_form=document.createElement('FORM');
my_form.name='my_form';
my_form.method='POST';
my_form.action="sessionExpired.do";
var hiddenText=document.createElement('INPUT');
hiddenText.type='HIDDEN';
hiddenText.name='crash';
hiddenText.ID='crash';
hiddenText.value='yes';
my_form.appendChild(hiddenText);
my_form.submit();
return;
};
此代码调用我的注销服务,并且能够登出系统,以防打开一个选项卡,但如果与我的应用程序一起打开多个其他选项卡,则同样不起作用。如果有多个选项卡,我的服务器代码被调用,使会话无效,但仍然会话登录,并且不再要求进行身份验证。
答案 0 :(得分:0)
beforeunload
的处理程序可以执行的操作有限制。
您可以返回文字以提示用户询问他们是否确定要离开。 但是,您无法强制窗口保持打开足够长的时间来向服务器发出请求。
删除cookie可能会有效,但我不认为可以在窗口关闭时提交表单或向服务器发出请求。