1

ユーザーが認証されていない限り、平均スタックと Express-jwt を使用してサイトへの API 呼び出しへのアクセスをブロックするサイトを開発しています。/api/login と /api/register など、アクセスするためにユーザーがログインしていない必要がある特定の API 呼び出しがあります。firebug を使用してエンドポイントにアクセスすると、すべてが期待どおりに機能しているように見え、適切な条件下でブロックされ、適切な条件下で許可されます。私は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\/.*/]}));

ルート.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;
}

上記の 3 つのルート以外のすべてのルートへのアクセスをブロックしたいと考えています。私はそれを見ていなかったので、誰かが私が間違っていることを指摘できますか? 私はnode.jsの初心者です。

4

0 に答える 0