ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【koa2】使用token

2021-12-28 23:59:54  阅读:208  来源: 互联网

标签:const checkToken require koa2 ctx js token 使用


1. 安装

npm install jsonwebtoken --save

2. 登录成功签发token

理解: 登录时通过数据库验证用户名和密码是否正确,若正确返回 token,否则提示错误

routes/user.js

// routes/user.js
const jwt = require("jsonwebtoken");
const { SECRET_KEY } = require("../utils/cryp");

router.prefix("/api/users");

router.post("/login", async (ctx, next) => {
  const { username, password } = ctx.request.body;
  const data = await login(username, password);
  const id = data.id;
  // Token 数据
  const payload = {
    username,
    id,
  };
  // 签发 Token
  const Token = jwt.sign(payload, SECRET_KEY, { expiresIn: "1day" });
  if (!data) {
    ctx.body = {
      code: 400,
      msg: "登录失败",
    };
    return;
  }
  ctx.body = {
    code: 200,
    msg: "登录成功",
    data,
    Token,
  };
});

3. 验证 token 中间件

utils/checkToken.js

// utils/checkToken.js
const jwt = require("jsonwebtoken");
const { SECRET_KEY } = require("../utils/cryp");

const checkToken = async (ctx, next) => {
  const url = ctx.request.url;

  if (url == "/api/users/login") {
    await next();
  } else {
    const token = ctx.request.header.token;
    try {
      jwt.verify(token, SECRET_KEY);
      await next();
    } catch (error) {
      console.log(error);
    }
  }
};

module.exports = checkToken;

4. app.js中使用中间件

const checkToken = require("./utils/checkToken");
app.use(checkToken);

不忘初心

参考链接:
https://blog.csdn.net/weixin_43801907/article/details/105310324
https://github.com/auth0/node-jsonwebtoken

标签:const,checkToken,require,koa2,ctx,js,token,使用
来源: https://blog.csdn.net/qq_40881695/article/details/122205418

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有