Skip to content
📈0️⃣

koa 如何实现全局 token 校验

1. 实现步骤

koa 如何实现全局 token 校验, 登录和注册接口除外,可以通过以下步骤进行:

  1. 安装依赖:首先需要安装 jsonwebtokenkoa-jwt 这两个 npm 包,前者用于创建和验证 token,后者用于处理 token 的中间件。
  2. 创建 token:使用 jsonwebtoken 创建一个 token。
  3. 配置中间件:使用 koa-jwt 中间件来全局控制哪些路由需要 token 验证。

INFO

验证 token:在需要验证 token 的路由中,koa-jwt 中间件会自动从请求头中获取 Authorization 字段,并尝试验证 token。 处理错误:可以在中间件中添加错误处理逻辑,比如当 token 验证失败时,返回特定的错误信息或者重定向到登录页面。

下面是一个简单的示例代码说明:

1.1. 安装依赖

首先,安装 jsonwebtokenkoa-jwt 模块,用于处理 JWT Token 的验证:

bash
npm install jsonwebtoken koa-jwt

1.2. 创建 token

创建一个 token 校验的中间件:

javascript
const jwt = require("jsonwebtoken");
const koaJwt = require("koa-jwt");

const secretKey = "yourSecretKey"; // 设置用于签署和验证 token 的密钥

// 创建一个中间件来校验 token
const tokenMiddleware = koaJwt({ secret: secretKey }).unless({
  path: [/^\/login/, /^\/register/], // 登录和注册接口除外
});

module.exports = tokenMiddleware;

1.3. 配置中间件

将该中间件应用于 Koa 应用程序,以实现全局的 token 校验:

javascript
const Koa = require("koa");
const tokenMiddleware = require("./tokenMiddleware");

const app = new Koa();

// 应用 token 校验中间件
app.use(tokenMiddleware);

// 其他路由处理逻辑
// 注册和登录接口需要放在校验之外

app.use(async (ctx) => {
  ctx.body = "Hello, World!";
});

app.listen(3000, () => {
  console.log("Server is running on http://localhost:3000");
});

在上面的代码中,我们创建了一个 tokenMiddleware 中间件用于校验 token,在 unless 方法中排除了注册和登录接口,确保这两个接口不受 token 校验的影响。然后将该中间件应用于 Koa 应用程序,从而实现全局的 token 校验。

2. 注意事项

需要注意的是,在实际开发中,你需要根据具体业务需求修改密钥(secretKey)、定义更复杂的校验逻辑或去数据库校验 token 是否合法等操作。上面所给出的代码仅作为示例,具体实现需要根据项目需求来决定。