【发布时间】:2016-07-12 09:02:51
【问题描述】:
我有一个带有 rails 后端的 ember 应用程序。
我有一个 Rails 可以返回的特定错误 (401),我希望 Ember 捕获并采取行动。在这种情况下,我想执行一个自定义方法(本质上修改请求 cookie),然后再次发出请求。
现在我在顶级路由器上发现了这个错误,并强制使用 window.location.reload() 重新加载整个应用程序。显然,这是一个可怕的 hack。我无法让 router.refresh() 工作,但无论如何这仍然是一个 hack。
理想情况下,我会在离适配器更近的地方捕捉到这一点,这样我就可以对其采取行动。也许我可以通过覆盖handleResponse() 在适配器级别捕获它,但是我将如何从那里重试请求?
http://emberjs.com/api/data/classes/DS.RESTAdapter.html#method_handleResponse handleResponse 确实传递了 requestData,但我需要一些方法来在适配器方法的上下文中执行请求,对吧?
【问题讨论】:
-
我猜你的服务器在用户不被授权发出请求时返回 401,对吗?如果是,请说明您如何处理授权:您使用 ember-simple-auth 还是其他方式?
-
我推出了自己的身份验证解决方案。我将一些用户元数据存储在本地存储中。此外,Rails 还维护一个会话。当 rails 会话已过期而本地存储尚未过期时,就会出现此问题。这种设计绝对不是最好的解决方案(我想我最终会移除本地存储部分),但现在它就是这样工作的。
标签: ember.js ember-data