我正在使用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的新手。