本文将介绍如何在 Express.js 中使用 session。首先,我们将讨论什么是 session,然后展示如何在 Express.js 中使用 session。
什么是 session?
在用户与 Web 应用程序交互时,session 是一种创建的实体,用于跟踪用户的状态。通常,当用户登录时,应用程序将创建一个 session,其中包含与该用户相关联的信息(例如,用户 ID 或权限)。然后,每次该用户与 Web 应用程序交互时,应用程序都可以访问该 session 中的信息。
session 的关键是持久性。会话信息会存储在服务器上,以便与该特定会话关联的用户可以在该用户的访问期间一直访问它。这意味着,即使用户关闭浏览器,然后重新打开,他们仍然可以访问其上一次与 Web 应用程序交互时使用的 session。
在 Express.js 中,我们可以使用 session 中间件轻松地实现 session 功能。
在 Express.js 中使用 session
首先,在 Express.js 应用程序中安装 session 中间件。可以使用以下命令:
npm install express-session
在 app.js 或 index.js 文件中引入中间件:
const session = require('express-session'); app.use(session({ secret: 'secret-key', //用来对session进行加密的密钥 resave: false, //强制保存session,即使它不起作用 saveUninitialized: true //强制将未初始化的session保存到存储中 }));
为了更好地说明 session 的使用,我们将使用一个示例代码:用户登录和注销。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ------- - --------------------------- ----- --- - ---------- ------------- -------- ------- ---------------- --------- - ---------- ---------------------------- --------- ---- ---- -------------------------------- - ------------ ----------------- ------- --------------------------------- ------- --------------------------- ------------------ --------------------------- ---- ------------ ------------- ---- - ------------------------- - ------ ----------- ------- ----- --- --- ----------------- ------------- ---- - ------------------------- - -------- -- --- --- ------------------ ------------- ---- - ----- -------- - ------------------ ----- -------- - ------------------ -- --------- --- ------- -- -------- --- ------- - ---------------- - - --------- ------- -- --------------------------- - ---- - ------------------------- - -------- -------- ------------ --- - --- --------------------- ------------- ---- - -- ------------------ - ----------------------------- - --------- ------------------------- --- - ---- - ----------------------- - --- ------------------ ------------- ---- - ---------------------- ------------------ --- ---------------- ---------- - ------------------- ------- -- ---- ------- ---
在上面的代码中,我们定义了三个路由:/login、/dashboard 和 /logout。
当用户访问 /login 路由时,它将呈现 login.ejs 模板。该模板包含一个表单,用户可以使用该表单提供的用户名和密码进行登录。当用户提交表单时,Express.js 应用程序将检查提供的用户名和密码。如果这些凭据有效,那么应用程序将创建一个名为 user 的 session,并将其设置为用户提供的用户名。然后,应用程序将用户重定向到 /dashboard 路由。
当用户访问 /dashboard 路由时,应用程序将检查他们是否已经登录。如果用户已经登录,则应用程序将呈现 dashboard.ejs 模板,并为该页面设置相应的用户名。如果用户没有登录,则应用程序将重定向到 /login 路由。
最后,当用户访问 /logout 路由时,应用程序将销毁他们的 session 并重定向到首页。
总结
使用 session 中间件可以轻松地在 Express.js 应用程序中实现 session。通过 session,应用程序可以跟踪用户的状态,并提供个性化体验。如果您在开发 Web 应用程序时需要跨页面或跨浏览器维持特定用户状态,那么 session 是一个很好的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6496712948841e989439de8c