gpt4 book ai didi

ember.js - 登录后如何修改适配器?

转载 作者:行者123 更新时间:2023-12-02 06:00:30 25 4
gpt4 key购买 nike

这是我的设置:

Ember :1.1.0-beta.1

Ember 数据:1.0.0-beta.2

# ON STARTUP
APP.ApplicationAdapter = DS.RESTAdapter.extend(
headers: {
'X-API-TOKEN': localStorage.token
}
)

如果他们在刷新时已登录,则效果很好...

然而...
#ON LOGIN FORM SUBMIT ACTION
$.post('/sessions', data).then( (response) =>
if response.token
localStorage.token = response.token
APP.ApplicationAdapter = DS.RESTAdapter.reopen(
headers: {
'X-API-TOKEN': localStorage.token
}
)
else
@set('error_message', response.error)

call 仍然是未经授权的,适配器继续尝试传递旧 token 。

因此,基本上适配器的'headers'属性不会通过'reopen'方法更新。在ember-data中更改适配器的正确方法是什么?

谢谢你们

最佳答案

实例化后,您应该从容器中获取适配器。

但是由于不清楚从哪里发出请求,因此请尝试如下操作:

#ON LOGIN FORM SUBMIT ACTION
$.post('/sessions', data).then( (response) =>
if response.token
localStorage.token = response.token

adapter = APP.__container__.lookup 'adapter:Rest'
adapter.set('headers', { 'X-API-TOKEN': localStorage.token })

else
@set('error_message', response.error)

Note: using App.__container__ is not recomended for production code depending from where you are making the request it would be more appropriate to get the container in a more clean way.



更新以回应您的最后评论

如果需要访问 Controller 中的容器,则:
APP.LoginController = Ember.ObjectController.extend
...
adapter = @get('container').lookup 'adapter:application'
adapter.set('headers', { 'X-API-TOKEN': localStorage.token })
...

应该会为您提供适配器。

希望能帮助到你。

关于ember.js - 登录后如何修改适配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18954729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com