【发布时间】:2021-12-06 23:41:34
【问题描述】:
堆栈:
前端 - Angular 12
|-- 利用 Angular/MSAL 与 Azure AD 集成 身份验证
后端:
|-- 节点JS V14.17.6
|-- Express 4.17.1
|-- 护照-Azure-AD
V4.3.0(passport-azure-ad 是 Passport Strategies 的集合
帮助
您与 Azure Active 集成 |-- 身份验证策略 - BearerStrategy(保护 API 和资源) 目录) |-- Passport V0.3.2(Passport-Azure-AD 使用的 Passport 版本)
后端项目结构(为简洁起见摘录) 根目录 |-- 源 |-- 路由器(在单个 .js 文件中保存每个实体的所有模块化路由的子目录,例如 users.js、actions.js) |--index.js(应用入口点)
我正在寻找一种方法来保护我的所有路由/api端点,而不是必须将passport.authenticate应用于每个路由端点内的每个路由处理程序,这可能是每个模块化路由的“N”个路由.js 文件,如上所述。我尝试了以下方法无济于事。
-
在 index.js 文件中,即我使用的应用程序入口点,例如const users = require('./routers/users') 和 app.use('/api/v1/users', users) 来挂载我的路由处理程序,我介绍了以下 app.use(passport.authenticate('oauth- Bearer', { session: false })) 因为护照是一个中间件但没有乐趣
-
在模块化路由处理文件中,我也尝试了以下方法: router.all(
'*',passport.authenticate('oauth-bearer', { session: false })) 基于快速文档 router.所有人都应该在所有请求方法的路径上应用中间件或提供的函数/处理程序,在这种情况下,'*'应该匹配所有路径,但这仍然只适用于基本路径“/”而不适用于文件中的其他路径,例如'/关系'
如果有人能开出保护所有路线的方法,将不胜感激。
【问题讨论】:
标签: node.js angular azure express