我已经能够使用基于共享 Ember Simple Auth cookie 的身份验证成功设置多个 Ember 应用程序。我的下一步是在应用程序之间设置正确的重定向。听我说。
场景 A(开箱即用,耶!)
- 用户尝试访问
domain.com/deep/link/resource
- 用户未登录
- 用户被重定向到
domain.com/login
,通过单点登录组件登录,该组件使用 Ember Simple Auth 来保存带有 token 的 cookie - 成功登录后,用户将通过之前的转换重定向回
domain.com/deep/link/resource
场景 B(这是开箱即用的,耶!)
- 用户尝试访问
app-b.domain.com/deep/link/resource
- 用户已通过带有 token 的 Ember Simple Auth cookie 登录
- 用户可以访问
app-b.domain.com/deep/link/resource
路由
场景C(这是我需要实现的)
- 用户尝试访问
app-a.domain.com/deep/link/resource
- 用户未登录
- 用户被重定向到
domain.com/login
,通过单点登录组件登录,该组件使用 Ember Simple Auth 来保存带有 token 的 cookie - 成功登录后,用户将通过之前在
app-a
子域上的转换重定向回app-a.domain.com/deep/link/resource
任何帮助或指导将不胜感激。我想知道是否可以仅使用 Ember Simple Auth 实现场景 C,或者是否需要在子域等的 beforeModel
中编写自定义重定向逻辑。
最佳答案
您将能够通过覆盖 AuthenticatedRouteMixin
's beforeModel
method 来使场景 C 工作。 。默认情况下,这将是(Ember.js)转换到登录路由,但在您的情况下,您需要某种东西。像 window.location.replace('domain.com/login')
并记住 cookie 中的当前 URL 等。为了在用户登录后重定向到 app-a.domain.com/deep/link/resource
,您需要覆盖 ApplicationRouteMixin
's sessionAuthenticated
method这样它会重定向到 cookie 中记住的上一个 URL(如果存在),如果不存在,则返回到默认行为。
总体而言,实际上按照以下步骤使其正常工作应该非常简单。
关于javascript - Ember Simple Auth 子域重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37708613/