我是Koa.js的新手,我试图创建一个中间件功能,以便可以在特定路由上对用户进行身份验证。
使用koa-session npm中的标准示例配置会话。
我在用户登录时设置会话。 console.log按预期显示会话:
router.post('/login', async ctx => {
let inputData = ctx.request.body;
let user = await UserController.getByEmail(inputData.email);
if(user) {
let match = await passcrypt.comparePassword(inputData.password, user.password);
let reply = match ? { status: "success", message: "user signed in", user} : { status : "error", message : "login usuccessful" }
ctx.session.user = user.dataValues;
console.log(ctx.session)
ctx.body = reply;
}
else {
ctx.body = { status: "error", message : "inserted email not present in database"}
}
})
然后我要使用此路由来确保用户通过身份验证
const AuthenticateMiddleware = require('../middleware/authenticate-api');
router.get('/', AuthenticateMiddleware, async ctx => {
let users = await UserController.getAll(ctx);
ctx.body = users;
})
中间件功能如下所示。但是会话对象始终为空。
module.exports = async (ctx, next) => {
console.log(ctx.session.user);
await next()
}
我以前只用express完成API,这就是我通常这样做的方式。使用Koa时我在做什么错了?