正在开发我的第一个 EmberJS 应用程序。整个应用程序要求用户登录。我正在尝试强制用户现在(初始加载页面时)和将来(用户注销时)登录的最佳方式并且没有刷新)。
我已经处理了用户身份验证挂钩 - 现在我有一个 ember-data 模型和关联的存储,用于连接处理授权用户并创建用户“会话”(使用 sessionStorage)。
我不知道该怎么做是强制用户在跨路由转换时进行身份验证,包括根路由中的初始转换。我把这个逻辑放在哪里?如果我有身份验证状态管理器,如何将其挂接到路由中?我应该有根路由之外的身份验证路由吗?
注意:如果这个问题措辞不好或者我需要更好地解释什么,请告诉我,我很乐意这样做。
Edit:我最终做了一些我认为更像余烬风格的事情,尽管可能是一个混乱的实现。我有一个身份验证状态管理器,用于存储当前用户的身份验证密钥以及当前状态。
每当某些东西需要身份验证时,它只需向 authmanager 请求并传递一个回调函数以使用身份验证密钥运行。如果用户未登录,它将拉出一个登录表单,并在用户登录之前暂停回调函数。
这是我正在使用的代码的一些精选部分。需要清理,我遗漏了一些东西。http://gist.github.com/3741751 http://gist.github.com/3741751
如果您需要在初始状态转换之前执行检查,则有一个特殊的函数Ember.Application
类称为deferReadiness()
。源码中的注释:
默认情况下,路由器将开始尝试将当前 URL 转换为
一旦浏览器发出应用程序状态DOMContentReady
事件。如果你
需要延迟路由,可以调用应用程序的deferReadiness()
方法。
一旦路由开始,请调用advanceReadiness()
method.
请注意,在撰写本文时,此功能仅适用于Ember-最新 http://cloud.github.com/downloads/emberjs/ember.js/ember-latest.js
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)