什么是 jm-passport
jm-passport
是一款 Node.js 的 npm 包,用于实现用户身份认证和权限管理。它可以轻松地添加身份验证和访问控制到您的应用程序中,并提供了丰富的配置选项和插件扩展性。
安装
在命令行中输入以下命令即可安装:
npm install jm-passport
使用
首先需要在您的应用程序中引入 jm-passport
:
const passport = require('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