我转过几个弯 绕过那个小雨楼
拿着蒲扇摆着衣衫渡着紧箍咒
不问天涯不停留 喝过几壶酒
不过年少白头道义放胸口
倘若明天之后 遥看前尘剑封侯
似那天上神仙无所求
朝朝暮暮君如梦醒十分不为何理由
是真是假是惶恐是无休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
又过了几个弯 算尽天量道莫慌
踏这田园闻这芳草香
跌跌撞撞仗剑天涯折煞不枉无笔良
是梦是幻是温柔是家乡
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
路过这风雨花满楼 片刻都不停留
我本这书生进京赶考留下许多愁
你问有没有时候 我叹这天道默悠悠
能否与我一醉方休
谁能与我一醉方休
koa教程2 token鉴权
之前我们在token中传入我们的自定义参数,现在我们要做一个token鉴权,很简单,如果他的token合法,就可以访问这个路由,如果不合法,就打回。
这个也不能说是真正意义上的鉴权,因为他还没有判断scope值,所以只能说是简单判断。
做这个判断我们就可以通过中间件的形式,于是我们在middlewares
目录下创建一个auth.js
文件
auth.js:
const parseBearerToken = require("@utils/paresBearerToken");
const jwt = require("jsonwebtoken");
const { tokenConfig } = require("@config/config");
const { TokenError } = require("@core/http-error");
class Auth {
constructor() {
}
get token() {
return async (ctx, next) => {
//获取头信息中的token
const token = parseBearerToken(ctx.header);
//解析token
try {
var decode = jwt.verify(token, tokenConfig.key);
} catch (error) {
//token解析错误
let errorMsg = "token解析失败"
if (error.name === "TokenExpiredError") {
errorMsg = "token已失效";
};
throw new TokenError(errorMsg);
}
//赋值到ctx
ctx.auth = decode;
//下一个中间件
await next();
}
}
}
module.exports = { Auth };
在jwt中,如果token不合法,错误,或者已经过期了,通过verify解析都会抛出错误,其中如果是解析错误,catch捕获的错误对象name为"TokenExpiredError"
,我们通过这个判断然后给出对应的错误信息。
如果token解析成功,则会返回这么一个对象:
{ uid: 1, scope: 8, iat: 1616308366, exp: 1616315566 }
我们通过var赋值到decode变量中,由于我们后面的路由可能还需要拿到token中的信息,所以我们将decode挂载到上下文ctx的auth中,然后next下一个。
这样我们可以在下一个路由中通过ctx.auth获取到token信息。
0
评论(0)