express-jwt:除非使用mocha / chai

时间:2016-11-16 19:14:27

标签: node.js express express-jwt

我正在使用mean stack和express-jwt开发一个站点来阻止访问我的站点的api调用,除非用户通过身份验证。有一些api调用,我需要用户没有登录才能访问,即/ api / login和/ api / register。当我使用firebug访问端点时,一切似乎都按预期工作,它在正确的条件下阻止并允许在适当的条件下。我甚至在萤火虫下收到令牌。但是,如果我使用mocha / chai进行测试,我会收到“401未授权”错误,指出“未找到授权令牌”。我使用以下代码忽略选定的端点:

app.js:

let expressJwt = require('express-jwt')

app.use(expressJwt({secret: process.env.AUTH_KEY}).
unless({path: ['/api/login', '/api/register', /^\/api\/external\/.*/]}));

routes.js:

module.exports = function(app, mongoose){
    app.use("/api/register", require("./routes/registration")(mongoose));
    app.use("/api/external/games", require("./routes/games")(mongoose));
    app.use("/api/external/shopping", require("./routes/shopping")(mongoose));
}

路由/ registration.js:

'use strict'

module.exports = function(){
    const express = require('express'); 
    const router = express.Router();
    const RegistrationFactory = require('../factories/RegistrationFactory');
    const registrationFactory = new RegistrationFactory();

    router.use(function(req, res, next) {
    next();
    });

    /* GET users listing. */
    router.post('/', function(req, res, next) {
        const registrationService = registrationFactory.create();
        registrationService.register(req.body, function(err, user){
            if (!err && user){
                console.log(err);
                res.sendStatus(200);
            } else {
                return next(err);
            }
        })
    });

    return router;
}

我想阻止访问除上面列出的三个以外的所有路线。有人可以指出我做错了什么因为我没有看到它吗?我是node.js的新手。

0 个答案:

没有答案