在现代的 web 应用程序中,JWT(JSON Web Token) 已经成为常用的认证与授权方案。Sails API JWT 是一个 npm 包,它提供了方便易用的接口用于处理 JWT 的相关操作。本文将介绍如何使用 Sails API JWT 实现 JWT 认证与授权。
安装
在开始使用 Sails API JWT 之前,需要先安装该 npm 包。可以在终端中使用以下命令安装:
npm install sails-api-jwt
使用
在安装完 Sails API JWT 之后,就可以在代码中引入它:
const sailsApiJwt = require('sails-api-jwt');
生成 token
首先需要生成一个 JWT token,Sails API JWT 提供了 sailsApiJwt.issueToken(payload, secretOrPrivateKey, options)
方法。其中,payload
是一个普通的 JavaScript 对象,用于存放一些认证信息,secretOrPrivateKey
是用于生成签名的密钥,options
是选项对象,可以设置 token 的过期时间等信息。下面是一个生成 token 的示例代码:
const payload = { userId: '1234567890', role: 'admin' }; const secretOrPrivateKey = 'my super secret key'; const options = { expiresIn: '2h' }; const token = sailsApiJwt.issueToken(payload, secretOrPrivateKey, options); console.log(token);
解析 token
在接收到 token 时,服务器需要对其进行解析,Sails API JWT 提供了 sailsApiJwt.verifyToken(token, secretOrPrivateKey, options)
方法。其中,token
是需要进行解析的字符串,secretOrPrivateKey
是用于验证签名的密钥,options
是选项对象,可以设置 token 的可信度等信息。下面是一个解析 token 的示例代码:
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTY3ODkwIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyMzkxMTJ9.njzZwNLznETEKOzru_lS9p-8hKjGTKBsJfkFGdPuSUA'; const secretOrPrivateKey = 'my super secret key'; const options = { maxAge: '1h', algorithms: ['HS256'] }; const payload = sailsApiJwt.verifyToken(token, secretOrPrivateKey, options); console.log(payload);
结合 Sails 中间件使用
使用 Sails API JWT 进行认证与授权的主要使用场景是在 Sails 应用程序中使用中间件。通过结合 Sails 的中间件功能,可以轻松地实现对指定接口的认证与授权。
下面是一个结合 Sails 中间件使用 Sails API JWT 的示例:
-- -------------------- ---- ------- -- ---------------- --------------------- - - ----- -------- - ------- ----------------------- -- ---- -------- - ------- ---------------------- ------- --------- -- ---- ------------ - ------- ------------------------- ------- --------- -- -- -- ------------------ ----------------------- - - --------------- - ----- ---------- -------- ---------- -- -- -- ----------------------- ----- ----------- - ------------------------- -------------- - ----- -------- ------------ ---- ----- - ----- ----- - -------------------------- -- -------- - ------ ---------------- - --- - ----- ------- - ------------------------------ --- ----- ------ ------ -------- - -------- ------- - ----- ----- - ------ ---------------- - --
在该示例中,每当用户访问 /users
或 /users/:id
接口时,Sails 将自动调用 jwtAuth
中间件进行认证与授权。如果接收到请求的 header 中没有包含有效的 JWT token,则会返回 403 Forbidden
响应,否则会将解析出的 token 转换为 req.user
对象,以便接下来的控制器使用。
总结
通过本文的介绍,我们已经了解了如何使用 npm 包 sails-api-jwt 实现 JWT 的认证与授权。实际上,在现代的 web 应用程序中,使用 JWT 进行认证与授权已经成为非常常见的做法,因此,学会使用 Sails API JWT 对于前端开发者来说是非常重要的。希望本文能够对你的工作有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005601281e8991b448de0c3