koa 实现 jwt 认证

本文介绍了如何使用 Koa 结合 bcrypt、jsonwebtoken 和 koa-jwt 实现 JWT 认证。主要内容包括自定义 401 错误处理中间件、配置 koa-jwt 中间件、注册与登录接口的实现。项目提供了 /api/register、/api/login 和 /api/users 三个 API,其中 /api/register 和 /api/login 为公共 API,无需 token,而 /api/users 需要有效的 token 访问。
摘要由CSDN通过智能技术生成

关于 Token 认证机制,这里不做更多解释。不清楚的可以看我的这篇文章:Web开发中常见的认证机制
GitHub 地址:koa-jwt-sample

所需库

  • bcrypt - 用于加密密码
  • koa-jwt - jwt 中间件
  • jsonwebtoken - 用于生成token下发给浏览器,在 koa2 以后的版本不再提供 jsonwebtoken 的方法,所以需要另行安装。

实现思路

整个方案实现的流程和思路很清晰,大致分为下面几步:
- 自定义 401 拦截中间件,用于拦截 token 不存在或者失效的情况
- 配置 koa-jwt
- 注册实现
- 登录实现

运行项目

该项目需要你已经装好 mongodb,并启动。关于 mongodb 的配置见 config/index.js

npm run start

该项目提供了三个 api
- /api/register
- /api/login
- /api/users

其中 /api/register/api/login 为 public api,无需token就能访问。/users 则为 private api,需要传入正确的 token 才能访问。

自定义 401 handler

使用了 koa-jwt 中间件后,如果没有token,或者token失效,该中间件会给出对应的错误信息。如果没有自定义中间件的话,会直接将 koa-jwt 暴露的错误信息直接返回给用户。

// server/middlewares/errorHandle.js
export default errorHandle = (ctx, next) => {
  return next().catch((err) => {
    if (err.status === 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值