https://xxxxauth0tennantxxxx/v2/logout
或https://YOUR_DOMAIN/v2/logout?returnTo=http%3A%2F%2Fwww.example.com
[当我这样做时,我会回来的。但我使用的是Auth0文档中的以下代码,该代码可构建包括端口号在内的网址。
router.get('/logout', (req, res) => {
req.logOut();
let returnTo = req.protocol + '://' + req.hostname;
const port = req.connection.localPort;
if (port !== undefined && port !== 80 && port !== 443) {
returnTo += ':' + port;
}
const logoutURL = new url.URL(
util.format('https://%s/v2/logout', process.env.AUTH0_DOMAIN),
);
const searchString = querystring.stringify({
client_id: process.env.AUTH0_CLIENT_ID,
returnTo: returnTo,
});
logoutURL.search = searchString;
res.redirect(logoutURL);
});
Heroku自动分配了一个端口,因此,因此每次我尝试注销时都会遇到The "returnTo" querystring parameter "http://xxxxx.herokuapp.com:12345" is not defined as a valid URL in "Allowed Logout URLs".
错误[我已经尝试添加所有可以允许的变体注销url,我可以尝试但是没有运气
http://localhost:8000,http://*.herokuapp.com,https://*.auth0.com/v2/logout,https://*.auth0.com/,https://xxxxxxx.auth0.com
,我什至尝试将app.set('trust proxy', 1);
设置为某些文档对Heroku的建议。
请,如何在我的注销URL中说明heroku分配的动态端口?
编辑:我也尝试过此端点的变体
而且我尝试将端点呼叫编辑为
router.get('/logout', (req, res) => {
let returnTo = req.protocol + '://' + req.hostname;
const port = req.connection.localPort;
if (port !== undefined && port !== 80 && port !== 443) {
returnTo = process.env.NODE_ENV === 'production' ? `${returnTo}/` : `${returnTo}:${port}/`;
}
req.logout();
if (req.session) {
req.session.destroy(function(err) {
if (err) {
console.log(err);
}
console.log('Destroyed the user session on Auth0 endpoint');
res.redirect(req.protocol + '://' + process.env.AUTH0_DOMAIN + '/v2/logout?client_id=' + process.env.AUTH0_CLIENT_ID + '&returnTo=' + returnTo +' ');
});
}
});
我正在使用Heroku,并且已成功部署。注销确实让我很头疼。根据文档,我应该传递一个网址,例如https:// xxxxauth0tennantxxxx / v2 / logout或https:// ...
http://xxxxx.herokuapp.com:12345
添加到允许的注销URL中。用heroku应用程序名称替换XXXXX,并同时包含端口号。