如何在Auth0的express-openid-connect库中指定IDP对应的connection参数
在express-openid-connect中指定登录connection的实现方法
express-openid-connect v2.x版本本身支持自定义授权参数,只需将connection参数嵌套在authorizationParams配置项中传递即可,具体实现方式如下:
1. 自定义独立登录路由(适配分角色登录需求)
你可以为客户和维护人员分别定义不同的登录路由,各自绑定对应的connection:
const { auth } = require('express-openid-connect'); // 面向客户的Google登录路由 app.get('/login/google', auth({ authorizationParams: { connection: 'google-oauth2' }, returnTo: '/customer-home' // 登录后跳转地址可自定义 })); // 面向维护人员的专属登录路由 app.get('/login/staff', auth({ authorizationParams: { connection: 'YOUR_STAFF_CONNECTION_NAME' // 替换为维护人员对应的connection标识 }, returnTo: '/admin-dashboard' }));
2. 为特定路由绑定登录校验+指定connection
如果需要给部分受限路由自动触发指定connection的登录校验,可以在requiresAuth中间件中配置参数:
const { requiresAuth } = require('express-openid-connect'); // 维护人员专属路由,访问时自动跳转至指定connection的登录页 app.get('/admin/*', requiresAuth({ authorizationParams: { connection: 'YOUR_STAFF_CONNECTION_NAME' } }), (req, res) => { // 路由逻辑 res.render('admin', { user: req.oidc.user }); });
3. 全局默认指定connection
如果全站默认使用同一个connection登录,可在中间件初始化时统一配置:
app.use(auth({ issuerBaseURL: '你的Auth0域名', clientID: '你的Auth0客户端ID', secret: '你的加密密钥', baseURL: '你的应用根地址', authorizationParams: { connection: 'google-oauth2', // 全局默认connection scope: 'openid profile email' } }));
补充说明:
authorizationParams是express-openid-connect专门用于向Auth0授权端点传递自定义参数的配置项,除connection外,prompt、screen_hint等所有Auth0支持的授权参数都可以放在该对象中传递。
内容的提问来源于stack exchange,提问作者fowler
相关产品推荐
相关产品推荐

