【问题标题】:How do I keep user name till browser close?如何在浏览器关闭之前保留用户名?
【发布时间】: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#


【解决方案1】:

问题在于我的 Cookie 创建。

我创建了一个持久 cookie 而不是会话 cookie。当我从我的 cookie 中删除过期时,问题就解决了。现在浏览器关闭时清除,即使标签页关闭也会保留用户数据。

谢谢大家的帮助。

【讨论】:

    【解决方案2】:

    服务器端: 如果您想在页面中保持价值,请使用 c# 中的视图。移到下一页意味着使用 C# 会话。

    客户端: 如果您想在客户端保持价值,请使用 document.cookies 或 sessiontroage、localstorage。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多