expressjs: как использовать функцию аутентификации в другом файле, прикрепленном к server.js?

Представьте, что у меня есть следующий фрагмент кода в server.js < function checkAuth ( req , res , next ) { if (! Req . Session . User_id ) { res . sendFile ( __dirname + '/login.html' ); } else { next (); } } Приложение . get ( '/' , ( req , res ) => { res . sendfile ( __dirname + 'login.html' ); }); приложение . post ( "/ login" , ( req , res ) => { if ( req . body . userID === 'a' && req . body . password === 'b' ) { req . session . user_id = req . body . userID ; res . redirect ( 'main' ); } else { res . redirect ( '/' ); } }); приложение . get ( '/ main' , checkAuth , ( req , res ) => { res . sendFile ( __dirname + '/main.html' ); }); приложение . get ( '/ logout' , ( req , res ) => { delete req . session . user_id ; res . redirect ( '/' ); }); require ( './latestNews.js' ) ( приложение ); require ( './featuredNews.js' ) ( приложение ); приложение . get ( '*' , ( req , res ) => { res . sendFile ( __dirname + '/404.html' ); }); приложение . listen ( порт , () => { консоль . log ( «прослушивание» + порт ); }); р>

module.exports = function(app){
    app.get("/latestNews", (req, res) => {
        res.sendFile(__dirname + '/latestNews.html');
    });
}

Сначала пользователь увидит страницу входа в систему. Как только он войдет в систему, он увидит главную страницу. Функция checkAuth используется в app.get ('/ main', ... для этого.

Я прикрепил два других файла latestNews.js и featuredNews.js. К ним относятся также app.get, app.post, ... и выглядит так:

require('./latestNews.js')(app);
require('./featuredNews.js')(app);

Таким образом, они экспортируются как модули и добавляются к server.js следующим образом:

app.get("/latestNews", checkAuth (req, res) => {
    res.sendfile(__dirname + '/latestNews.html');
});

Я сделал server.js, latestNews.js и featuredNews.js, чтобы отделить работу и сохранить код коротким вместо одного длинного файла.

Моя проблема заключается в следующем:

Как передать функцию «checkAuth» на lastNews.js и featuredNews.js. Поэтому я могу использовать его так?

authorizedRouter = express.Router();

authorizedRouter.use( checkAuth );

app.use( '/', authorizedRouter );

require('./latestNews.js')(authorizedRouter);
require('./featuredNews.js')(authorizedRouter);

javascript,html,node.js,express,login,

0

Ответов: 1


1 принят

Вы можете создать новый Router, который имеет эту проверку, и монтируется в ваше приложение:

/

Просто будьте осторожны, когда вы монтируете маршрутизатор. Если вы хотите установить его в /своем приложении, вы должны поместить его после всех ваших app.get/app.postобъявлений.

JavaScript, HTML, Node.js, выразить, Логин,