介绍
@hoodie/server-account-node-sessions 是一个 npm 包,它为 Hoodie 的账户系统提供了一种会话验证机制。它使用 Node.js 中的 express-session 库来创建并存储用户会话,并通过 Hoodie 的插件系统来对其进行验证。
安装
你可以通过 npm 来安装 @hoodie/server-account-node-sessions。
npm install --save @hoodie/server-account-node-sessions
使用
要使用 @hoodie/server-account-node-sessions,你需要将其添加到 Hoodie 插件系统中,并在 Hoodie 启动时将其设置为要使用的会话验证机制。
将插件添加到 Hoodie
要将 @hoodie/server-account-node-sessions 添加到 Hoodie 插件系统中,你需要将其添加到你的项目的 package.json 中。
{ "name": "my-hoodie-project", "dependencies": { "@hoodie/server-account-node-sessions": "^1.0.0" } }
然后使用 npm 安装该插件:
npm install
启用会话验证
要启用会话验证,你需要通过设置 Hoodie 的 account.session
配置来启用它。
-- -------------------- ---- ------- -- --------- ----- ------ - ------------------------- ----- -------- - ----------------------------------------------- ----- ------ - --- -------- -- --- ------ -- --- -------- ----------- -------- - -------- - -------- -------- - - -- -- --- ------ ---- ---
你可以通过配置对象来设置会话验证的适配器。该适配器定义了会话数据应该如何存储。现在只有一个适配器可用:'memory',它将会话数据存储在内存中。实际上,你不应该在生产中使用该适配器,因为它只适用于开发和测试。
将会话验证应用到路由
@hoodie/server-account-node-sessions 提供了一个名为 withSession
的中间件,可以用来应用会话验证规则到路由中。
const express = require('express') const router = express.Router() router.get('/profile', sessions.withSession, (req, res) => { // 使用 req.session 进行操作 })
当请求到达该路由时,中间件将检查用户是否已登录。如果用户已登录,中间件将使请求继续。否则,中间件将发送一条 401 响应。
中间件还可以检查用户是否具有特定的角色或使用具有特定名称的令牌。
router.get('/admin', sessions.withSession({ requiredRoles: ['admin'] }), (req, res) => { // 使用 req.session 进行操作 })
现在,只有具有 "admin" 角色的用户才能访问 /admin 路由。
示例代码
以下是一个完整的示例,它演示了如何使用@hoodie/server-account-node-sessions 在 Hoodie 中启用会话验证。
-- -------------------- ---- ------- ----- ------ - ------------------------- ----- ------- - ------------------ ----- -------- - ----------------------------------------------- ----- ------ - --- -------- -------- ----------- -------- - -------- - -------- -------- - - -- ----- --- - --------- ------------ --------------------- ----- ---- -- - ---------------- -------------------------- -- ---------------- --------------
在该示例中,我们创建了一个 HTTP 服务器,该服务器在 / 路径上提供了一个简单的欢迎消息。我们使用 sessions.withSession
中间件来启用会话验证。如果用户未登录,中间件将发送一条 401 响应。如果用户已登录,中间件将使请求继续向下执行,并从 req.session
中读取用户名。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bb8967216659e2440d5