【发布时间】:2016-10-19 17:43:27
【问题描述】:
我正在使用 Sails.js 和 Angular 2。我想在 Angular 2 中使用默认的 HTML5 路径策略。要使用 Express 服务器做到这一点,我以前做过,我需要每条路线都没有'与返回主页视图的 api 调用无关。所以在表达上,它会是这样的:
app.get('*', function(req, res) {
res.render('index');
});
我知道这很有效,因为我目前正在另一个项目中使用它。这样,当我转到domain.com/some/route 时,服务器会返回正确的视图。如果您没有路由的通配符,则它无法匹配 URL 并且不会返回任何内容。在我的另一个项目中,我还使用身份验证中间件来检查每个 API 调用的 JWT,而不是索引调用。这样 Angular 2 应用程序可以处理登录并仍然显示一些东西。
话虽如此,我认为 Sails.js 的方式会相似。这里的不同之处在于我们使用的是 OpenID Connect,并且该服务器是独立的,并且在那里完成了身份验证。我在config/routes.js 中配置了路由,当我在列表顶部有以下路由(返回主页布局视图)时,它们工作得很好:
'/': 'HomeController.index'
然后当路径完全匹配时,它会返回正确的视图。但是我的 Angular 2 应用程序需要使用 Hash Location 策略。我尝试将该路线移动到路线列表的底部并将其更改为:
'/*': 'HomeController.index'
但是当我的应用程序尝试使用 passport-openidconnect 进行授权时,我在浏览器中收到错误消息,提示浏览器重定向了太多次。终端什么都没有显示,我什至没有在授权完成后点击认证服务器或回调函数。
我认为这很简单;我只是关注directions explained here,但他们没有工作。其他人有同样的问题吗?
提前感谢您的帮助。
【问题讨论】:
标签: angular sails.js passport.js