【发布时间】:2017-07-17 05:57:17
【问题描述】:
在我的服务器中,我创建了一个快速会话。我想在其中存储用户是否已登录的检查。我不知道如何在代码的非服务器端访问这个快速会话。
基本上,如果用户已登录,我将编辑用户看到的页面。我只会在用户登录或未登录时才知道编辑页面,这需要我访问快速会话。
【问题讨论】:
标签: javascript node.js express-session
在我的服务器中,我创建了一个快速会话。我想在其中存储用户是否已登录的检查。我不知道如何在代码的非服务器端访问这个快速会话。
基本上,如果用户已登录,我将编辑用户看到的页面。我只会在用户登录或未登录时才知道编辑页面,这需要我访问快速会话。
【问题讨论】:
标签: javascript node.js express-session
您不能直接从客户端访问会话数据。它仅存储在服务器端。会话 cookie 仅包含会话 ID,不包含实际会话状态。
要访问登录状态,您有几个选择:
当您呈现页面时,在页面中插入一个 Javascript 变量,其中包含已登录状态,可能还有已登录用户的用户 ID。然后,您的客户端 JS 可以简单地检查该变量以了解状态。如果您使用任何类型的模板引擎来呈现您的页面,这很容易做到。在某些高级标签(例如页面中的标签)上设置loggedIn 类名也很常见。这允许 CSS 根据用户是否登录自动调整(例如,隐藏登录按钮)。
您完全可以检查会话 cookie 是否存在。如果不存在会话 cookie,则用户无法登录。会话 cookie 存在这一事实并不一定意味着用户已登录。这可能是旧的 cookie,甚至可能是来自不同的 cookie用户。但是,没有 cookie 意味着没有用户登录。
您可以查询服务器并询问它。您必须指定您要询问的用户 ID,然后服务器可以检查当前会话 cookie 是否有效并属于该特定用户。
就个人而言,我可能会对选项 #1 做一些变体。
【讨论】:
您无法在客户端(例如浏览器)访问快速会话数据。 它只能在服务器端访问。
注意会话数据不保存在 cookie 本身中,只是会话 ID。会话数据存储在服务器端。
您需要添加一些端点来检查会话以获取有关用户状态的信息。
【讨论】: