如何检测用户是否来自外部link?

How to detect if the user have come from external link?

有没有办法区分通过外部 link 访问(例如从历史记录或从其他站点访问)或通过 link 从 beforeModel 中同一应用程序的其他页面访问处理程序?

这是我的案例:

  1. 如果用户通过直接 link 访问我的应用程序并请求需要经过身份验证的用户的路由,我会转换到索引路由并显示带有授权表单的弹出窗口。
  2. 如果用户已经在我的站点上并尝试访问需要经过身份验证的用户的请求路由,我将中止转换并在上一页显示弹出窗口。
  3. 我没有单独的身份验证页面。

我目前的工作 是检查一些奇怪的私有 属性 称为 sequence 的转换对象,它已传递给 beforeModel 处理程序,如果 transition.sequence === 0,则用户来自 "outside",否则用户关注 link "inside" 我的应用程序。

我认为这是实现目标的坏方法,核心开发人员可以随时删除sequence 属性。

那么,是否有任何清晰的方法来区分当前路由是从我的应用程序的 "outside" 还是 "inside" 请求的?

非常感谢任何帮助,谢谢!

P.S。 EmberJS v1.10.0

P.S.S.对不起我的英语

如果您想避免使用内部调用,您可以像这样在应用程序路由中跟踪历史记录 Implementing a "conditional" back button in ember.js

但在您的路由器中可能会更好,因为控制器很快就会消失。

你或许可以使用 http://emberjs.com/api/classes/Ember.Route.html#event_didTransition

聊天后更新

计数、中止等转换的逻辑可以在应用程序路由的 willTransition 操作中完成 http://emberjs.com/guides/routing/preventing-and-retrying-transitions/