在主要由gitbook生成的静态网站之上添加中间件身份验证+授权的nodejs站点中,路由方案在windows
环境(Windows 10或Windows Server)和{{ 1}}(Linux上的Azure应用服务)。
带有静态网站的中间件说明了路由模式的容忍度
unix docker
在从win转换为unix的过程中,由于URI(即使在路由中使用// authentication route + keeping incoming url for further redirection
router.get('/:book?/login/:originalUrl?', function (req, res) {
passport.authenticate('azuread-openidconnect', { customState: req.params.originalUrl, failureRedirect: '/' }, callbackwhatever);
});
// all-in route + authentication check
router.get('/:book?/*', (req, res) => {
var book = req.params.book;
if (!req.isAuthenticated()) {
res.redirect('/' + (book || 'default') + '/login/' + encodeURIComponent(req.originalUrl));
}
else
[sending content]
});
进行编码,我也遇到了另一种类似的情况,我通过将数据传输到body + POST查询来解决该问题。身份验证方案。
经过常规测试后,我几乎可以确定问题出在encodeURIComponent
上,但是我找不到有关如何在快速重定向方案中解决该问题的参考。
版本
表达encodeURIComponent(req.originalUrl)
赢节点4.15.5
unix节点7.1.0