在前端开发中,认证和授权是非常重要的部分。使用 Jason Web Token (JWT) 是一种常见的身份验证和授权机制。在 egg.js 框架中,使用 egg-jwt-auth 插件可以轻松实现 JWT 的认证和授权。
安装
使用 npm 安装 egg-jwt-auth 插件:
npm install egg-jwt-auth --save
配置
在 egg.js 的配置文件 config.default.js 中进行配置:
exports.jwt = { enable: true, secret: '123456' };
配置项说明:
enable
:是否启用插件(默认为true);secret
:签名密钥。
使用
创建 Token
const token = await ctx.service.jwt.createToken({ userId });
在 Egg.js 应用中,可以通过 service 实现创建 Token 的方法。上述代码中,createToken
方法接收一个包含 userId
属性的对象作为参数,返回生成的 Token。
鉴权
在需要进行鉴权的 Controller 中,通过 ctx.state.user
获取 JWT 中保存的用户信息。
class UserController extends Controller { async index() { const { ctx } = this; const userId = ctx.state.user.userId; // ... } }
如果 JWT 验证失败,会抛出 401 Unauthorized
错误。
示例代码
接下来,我们来看一个完整的示例,使用 egg-jwt-auth 插件实现 JWT 的认证和授权:
-- -------------------- ---- ------- ----- ---------- - -------------------------- ----- -------------- ------- ---------- - ----- ------- - ----- - --- - - ----- ----- ------ - ---------------------- ----- ---- - ----- ------------------------------ -------- - ----- - ----- ------- - ----- - ---- --- - - ----- ----- - --------- -------- - - ----------------- ----- ---- - ----- ------------------------------------------ -- ----- -- ------------- --- --------- - ----- ----- - ----- ----------------------------- ------- ------- --- -------- - - ----- -- - ---- - ---------- - ---- -------- - - -------- -------- -------- -- --------- -- - - - -------------- - ---------------
在该示例中,login
方法首先检查用户名和密码是否匹配。如果匹配,使用 createToken
方法创建 Token,然后将 Token 返回给客户端。在 index
方法中,通过 ctx.state.user
获取 userId
,然后使用 find
方法获取用户信息并返回。
这个简单的示例说明了如何使用 egg-jwt-auth 实现 JWT 的认证和授权。使用 egg-jwt-auth 插件可以使认证和授权变得更加简单和便利,特别是在应用涉及到多个用户或需要访问控制时。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600558cb81e8991b448d6154