从中间件访问Koa会话

时间:2018-06-22 13:00:41

标签: node.js authentication middleware koa koa.js

我是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时我在做什么错了?

0 个答案:

没有答案