Избегать повторяющегося контроля регистрации в express - PullRequest
0 голосов
/ 08 марта 2020

У меня есть следующий код брандмауэра, мне интересно, как я могу избежать повторения входа в систему в каждом веб-сервисе, спасибо;

app.post("/createEvent", function(req, res) {

    // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }
});

app.post("/readEvent", function(req, res) {
     // LOGGED IN CONTROL
     if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }
});

app.post("/updateEvent", function(req, res) {

  // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }

});

app.post("/deleteEvent", function(req, res) {

  // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }

}

Полагаю, я должен включить код во внешнюю функцию

1 Ответ

0 голосов
/ 08 марта 2020

Сделать промежуточное ПО:

function requiresAuth (req, res, next) {
    // LOGGED IN CONTROL
    if (!req.session.loggedIn) {
        console.log(" FORBIDDEN ");
        res.status(403).send({ errorCode: "403" });
        return;
    }
    else {
        next(); // continue the process
    }
}

Теперь вы можете использовать его следующим образом:

app.post("/createEvent", requiresAuth, function(req, res) {});

app.post("/readEvent", requiresAuth, function(req, res) {});

app.post("/updateEvent", requiresAuth, function(req, res) {});

app.post("/deleteEvent", requiresAuth, function(req, res) {});

Реализуйте его в своем собственном файле, и теперь у вас есть модуль, который можно использовать в любом месте вашего кода.

Промежуточное программное обеспечение является гибким. Помните, Express позволяет вам применять промежуточное ПО для целых маршрутов:

app.use('/protected/path', requiresAuth, protectedRouter);

Дополнительная подсказка: вы можете использовать это для реализации ролей:

function requiresAuth (role) {
    return function (req, res, next) {
        // LOGGED IN CONTROL
        if (!req.session.loggedIn || req.session.role !== role) {
            console.log(" FORBIDDEN ");
            res.status(403).send({ errorCode: "403" });
            return;
        }
        else {
            next(); // continue the process
        }
    }
}

app.post("/createEvent", requiresAuth('USER'), function(req, res) {});

app.post("/readEvent", requiresAuth('USER'), function(req, res) {});

app.post("/updateEvent", requiresAuth('USER'), function(req, res) {});

app.post("/deleteEvent", requiresAuth('ADMIN'), function(req, res) {});

Вы можете реализовать более сложные ролевые логи c при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...