【发布时间】:2018-05-29 06:43:12
【问题描述】:
我正在使用C# 和javaScript 开发一个Web 应用程序。我需要将用户数据保存在浏览器中,这样用户一旦登录就不需要在同一个浏览器的新标签上登录。但是如果他关闭浏览器,数据应该会被清除。
我在网上搜索并没有找到解决方案。
我尝试使用document.cookie,但是当浏览器关闭时它们不会被清除。 localStorage 也有同样的问题。
我试过sessionStorage,但是当标签页关闭时它被清除了。
我也试过了
$(window).on('unload', function (e) {
----
});
但unload 函数正在清除重新加载或关闭标签页时的数据。
谁能给我一个解决方案?
编辑[已解决]
问题在于我的Cookie 创建。
我创建了一个persistent cookie 而不是session cookie。当我从我的 cookie 中删除 expires 时,问题就解决了。现在浏览器关闭时清除,即使标签页关闭也会保留用户数据。
谢谢大家的帮助。
【问题讨论】:
-
根据用户代理(= 浏览器),选项卡可能在单独的进程中运行。您无法保证选项卡在概念上与浏览器窗口不同。这是您在 Web 编程中应该习惯的:您对客户端的控制有限。
-
会话cookie,如果正确完成,将在浏览器关闭时删除。您可以使用
document.cookies创建持久或会话的 cookie,很可能您正在创建持久的。通常,我不会从前端执行此操作。在服务器响应标头中,您告诉客户端创建会话 cookie。 developer.mozilla.org/en-US/docs/Web/HTTP/Cookies -
看@jintopullolickal 我已经可以告诉你,你的实现可能是一个安全漏洞,并可能导致错误和其他形式的安全漏洞(也就是不让端点执行授权检查)。在请求响应场景中,身份验证的整个概念是客户端和服务器之间的一种机制。如果您的服务器不认为用户已通过身份验证,但您的客户端框架认为 - 这是一个问题。祝你好运。
标签: javascript c#