如何在 koa2 和 nodejs 中使用 jwt

How to use jwt in koa2 & nodejs

我有一个页面是用nodejs和koa写的,我对JWT有点困惑,请检查下面的代码。

'use strict';
const Router = require("koa-router");
const router = new Router({prefix: '/login'});
const jwt = require('jsonwebtoken');
const jwtkey = "123456";
router
    .get('/', async (ctx, next) => {
        await ctx.render("login", {
            
        });
    })
    .post('/', async (ctx, next) => {
        try {
            let email = ctx.request.body.email || "";
            let password = ctx.request.body.password || "";
            //check user
            if (islogin) {
                let payload = {
                    email: email,
                    password: sha1(password).toString()
                }
                let token = jwt.sign(payload, jwtkey, {expiresIn: '3h'});
                ctx.body = {"error": false, "msg": token};
            } else {
                throw "Wrong";
            }
        } catch (e) {
            ctx.body = {error:true, msg: e instanceof Error ? e.message : e};
        }
    })
module.exports = router;

我想实现在访问登录页面时,如果jwt生成的token在服务器端存在并且正确,则console.log("logined"),如果不存在,则显示登录页面。

.get('/', async (ctx, next) => {
  //how to verify the token?
  if(token) {
     console.log("logined");
  } else {
    await ctx.render("login", {
            
    });
  }
})

谢谢。

生成令牌后,您应该在用户的浏览器中将该令牌设置为 cookie 或其他方式,

然后在请求/页面检查令牌并验证有效性

var decoded = jwt.verify(token, key);