我已经能够使用共享的基于Ember Simple Auth cookie的身份验证成功设置多个Ember应用程序 . 我的旅程的下一步是在应用程序之间设置适当的重定向 . 听我说 .
场景A(这是开箱即用的,是的!)
-
用户尝试访问
domain.com/deep/link/resource
-
用户未登录
-
用户被重定向到
domain.com/login
以通过单点登录组件登录,该组件使用Ember Simple Auth来保存带令牌的cookie -
成功登录后,用户通过上一次转换重定向回
domain.com/deep/link/resource
场景B(这是开箱即用的,是的!)
-
用户尝试访问
app-b.domain.com/deep/link/resource
-
用户已使用令牌通过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来保存带令牌的cookie -
成功登录后,用户通过
app-a
子域上的上一次转换重定向回app-a.domain.com/deep/link/resource
任何帮助或指导将不胜感激 . 我想知道我是否只能使用Ember Simple Auth实现 Scenario C ,或者我需要在子域上的 beforeModel
中编写自定义重定向逻辑等 .
1 回答
您可以通过覆盖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(如果存在),如果不存在则回退到默认行为 .总的来说,实现这一点应该非常直接,实际上遵循这些步骤 .