npm 包 jm-passport 使用教程

阅读时长 5 分钟读完

什么是 jm-passport

jm-passport 是一款 Node.js 的 npm 包,用于实现用户身份认证和权限管理。它可以轻松地添加身份验证和访问控制到您的应用程序中,并提供了丰富的配置选项和插件扩展性。

安装

在命令行中输入以下命令即可安装:

使用

首先需要在您的应用程序中引入 jm-passport

使用 passport.init 方法初始化配置,并将其注册到 Express app 中:

-- -------------------- ---- -------
-- -----
----- ------ - -
  ---------- ----- --- --------
  ---------- ----- -- ----- ----
  ------------------------ ----- ---------- -----
  --- -
    ---- ----------------------------------------
  --
--

-- --- ------- --- -
----------------------
---------------------------------

然后您可以使用其提供的路由来实现身份验证和访问控制。以下是一个基本的示例:

-- -------------------- ---- -------
-- --------
----------------------------- ----------------------------- ----- ---- -- -
  ----- ----- - ----------------------------
  ---------- ----- ---
---

-- --------
----------------------- --------------------------- ----- ---- -- -
  -------------------
---

-- -----------
--------------------- --------------------------- ----------------------------------- ----- ---- -- -
  ---------- -------- ------ ------ ---
---

其中 authenticateLocal 方法用于验证用户名和密码,authenticateJwt 方法用于验证 JWT token,authenticateRole 方法用于验证用户角色是否为管理员(在配置文件中定义)。如果用户不符合要求,它们将以 401 HTTP 状态码响应。

配置选项

您可以在初始化 jm-passport 的时候传入配置选项,以定制化您的身份验证和访问控制。以下是配置选项的详细说明:

  • jwtSecret:JWT token 的 Secret key,用于加密和解密 token。默认为 your_jwt_secret
  • expiresIn:JWT token 过期时间,默认为 3600 秒。
  • password_encryption_key:用于加密用户密码的 key,默认为 your_encryption_key
  • db.url:MongoDB 数据库的连接 URL,默认为 mongodb://localhost:27017/jm-passport
  • db.options:MongoDB 数据库的选项参数,使用 MongoDB 的默认选项,可选。
  • roles:用户角色定义,用于访问控制。默认为 { admin: 'admin' }
  • local.enabled:是否启用本地身份验证,默认为 true
  • local.usernameField:请求体中用户名的 key。默认为 username
  • local.passwordField:请求体中密码的 key。默认为 password
  • jwt.enabled:是否启用 JWT token 身份验证,默认为 true
  • jwt.secretOrKey:JWT token 的 Secret key,和 jwtSecret 相同。
  • jwt.jwtFromRequest:从请求中获取 JWT token 的方法,可设置为 'jwt-header''jwt-cookie'。默认为 'jwt-header'
  • jwt.cookieName:从 cookie 中获取 JWT token 的 cookie 的名称,默认为 jwt
  • jwt.headerName:从 HTTP header 中获取 JWT token 的 header 的名称,默认为 authorization
  • jwt.passReqToCallback:是否将 request 对象传递到回调函数中。默认为 false
  • jwt.issuer:JWT token 的 issuer,可选。
  • jwt.audience:JWT token 的 audience,可选。

插件扩展性

jm-passport 支持插件扩展性,可以轻松扩展和自定义您的身份验证和访问控制逻辑。以下是一个示例插件:

-- -------------------- ---- -------
-- -------------------- ----- -
--------------------------- ----- ----- -- -
  ------------------------ --------------------- ----- ------
---

-- ----
----------------------------- ----------------------------- ----- ---- -- -
  ----- ----- - ----------------------------
  --------------------------------- ---- ----------
  ---------- ----- ---
---

其中 passport.use 方法用于定义一个插件,passport.usePlugin 方法用于使用插件。

总结

jm-passport 是一款非常实用的身份验证和访问控制 npm 包,可以快速地添加这些功能到您的应用程序中。除了它提供的基本功能之外,您也可以自定义和扩展它来满足您的特定需求。希望本文的介绍能够帮助您更好地使用它。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600562f681e8991b448e0bf0

纠错
反馈