简介
avelow-auth 是一个基于 Node.js 的轻量级身份验证库,使用 JSON Web Token(JWT)进行身份验证,支持密码和令牌两种登录方式。
安装
使用 npm 或者 yarn 安装 avelow-auth。
npm install avelow-auth --save
或者
yarn add avelow-auth
使用方法
密码登录
首先需要在登录页面让用户输入用户名和密码,然后在服务器端进行验证。
-- -------------------- ---- ------- ----- ---------- - ----------------------- -- ------------ -------- ---------------------------- - ------ - --------- ------- --------- ---------- -- - -------- ---------------------- --------- - ----- ---- - ----------------------------- -- ------- ------ ------ -- -------------- --- --------- ------ ------ ------ ----- - -------- ---------- ---- - ----- - --------- -------- - - --------- -- ------------------------ ---------- - ---------------------- -------- ---------- -------- -- ---------- --- ------- - ----- ----- - ----------------- --------- --- ---------- -------- ------ ------------ ------ --- -
authenticate
函数是用来验证用户名和密码是否匹配的,返回 true 表示匹配,false 表示不匹配。
当用户成功登录后,使用 avelowAuth.sign 函数生成一个 JWT 并将其存储在前端的 cookie 或者 local storage 中。
令牌登录
当用户已经登录成功并获取了 JWT,就可以在后续的请求中携带这个 JWT 来进行身份验证。
-- -------------------- ---- ------- ----- ---------- - ----------------------- -------- ------------ ---- ----- - ----- ----- - -------------------------- -- -------- - ---------------------- -------- -------- ------- --- ------- - --- - ----- ------- - ------------------------- -------- - -------- ------- - ----- ----- - ---------------------- -------- -------- ------- --- - - ------------ -------- ----- ---- -- - ---------- -------- ------ ---------------------- --- ---
protect
函数是一个中间件,用来保护需要身份认证的路由。当请求来到需要身份验证的路由时,会先检查请求头中是否携带了 JWT,如果没有,返回 401 错误状态码并提示缺少令牌。如果携带了 JWT,就使用 avelowAuth.verify 函数来验证 JWT,并将解码后的数据存储在 req 对象的 user 属性中,继续执行下一个中间件。
示例代码
登录页面
-- -------------------- ---- ------- ------ ------- --------- ------ ----------- --------------- -- -------- ------- --------- ------ --------------- --------------- -- -------- ------- ---------------------------- -------
-- -------------------- ---- ------- ----- ---- - ------------------------------- ------------------------------- ----- ------- -- - ----------------------- ----- ---- - - --------- ----------------------------- --------- ----------------------------- -- ----- -------- - ----- --------------- - ------- ------- -------- - --------------- ------------------- -- ----- --------------------- --- -- ------------- - ----- - ----- - - ----- ---------------- ----------------------------- ------- -------------------- - ---- - ---- - ---------------- -------- -- ----------- - ---
身份验证中间件
-- -------------------- ---- ------- -- ------- ------- --- ----------- ----- --- - ---------- -- ------ ------ ---------------- -- -- - ------------------- --------- -- ---- ------- ---
// 模拟一个需要身份认证的路由 app.get("/", protect, (req, res) => { res.json({ message: `Hello ${req.user.username}` }); });
总结
本文介绍了 avelow-auth 的使用方法,包括密码登录和令牌登录。使用 avelow-auth 可以快速实现身份验证,提高 Web 应用的安全性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ca681e8991b448da0b7