我有一个应用程序,要求用户在 15 到 30 分钟不活动期间重新输入密码,以便他们可以继续他们正在做的事情。
我目前的想法是使用一段 javascript 在 15 分钟后调用弹出窗口,要求用户再次登录。整个网站有 15 分钟的表单例份验证超时和 30 分钟的 session 超时。
如果用户在弹出窗口中成功验证了自己的身份,我希望它允许原始页面进行回发。
目前,我的弹出窗口正在运行(使用 JS 进行 15 分钟倒计时),并且用户可以再次登录,但是当弹出窗口关闭并且用户尝试在其原始页面上执行操作时,他们会要求重新登录。
我认为这是因为附加到原始页面的原始 cookie 现在已经过期,并且不会检测到新的 cookie。
如何将弹窗中的认证成功传递到原页面?
最佳答案
如果您添加元标记或隐藏的 div,它会在元标记的内容属性中填充身份验证 token ,并且仅在隐藏的 div 的 div 主体中填充身份验证 token ,您可以像这样从弹出窗口中获取它...
var debugWin = window.open('','aWindow','width=600,height=600,scrollbars=yes');
var somevar = debugWin.document.body.getElementById("my_hidden_div_id").innerText;
然后您可以使用 JavaScript 中 somevar 的内容更新 session cookie。只要维护窗口的句柄,就应该能够获取窗口的 DOM。
在获取 dom 的方式上可能存在一些跨浏览器差异,我认为 IE 的方法略有不同,但很容易测试并且结果是相同的。
关于asp.net - 如何通过弹出窗口保持用户登录状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864133/