首页 > 解决方案 > NodeJS Passport 为每个路由配置,作为中间件添加并且没有错误,但它不起作用/触发

问题描述

我有一个 NodeJS Api 并且我使用 Passport Azure AD Bearer Token 进行身份验证——当我全局配置它时一切都很好,但为了能够保持它干净,我需要为每个路由文件配置它。

我采用了首页上的逻辑并将其作为中间件添加到路由文件中,但它似乎没有触发:

router.use(function (req, res, next) {
passport.initialize()
passport.use(bearerStrategy);
passport.authenticate('oauth-bearer', { session: false })
next();
})

配置对象也出现在此代码上方。

标签: node.jsexpresspassport.jspassport-azure-ad

解决方案


我最终重命名了我的护照配置对象和初始化对象,并为每个应用添加了 _appname 并在 index.js 中将它们全部初始化,然后简单地在父路由上提及哪个护照实例保护哪个。

下面的代码:

    // MIDDLEWARE    
    app.use(passport_myAppName.initialize());
    passport_myAppName.use(bearerStrategy_myAppName)

    app.use(passport_mySecondApp.initialize());
    passport_mySecondApp.use(bearerStrategy_mySecondApp)

    // ROUTES
    app.use("/myAppName", passport_idtTV.authenticate('oauth-bearer', { session: false }), myAppName);
    app.use("/mySecondApp", passport_idtTV.authenticate('oauth-bearer', { session: false }), mySecondApp);

推荐阅读