imr*_*ane 10 javascript api coffeescript backbone.js
我的PHP api需要在我的前端Backbone应用程序的每个请求中提交用户令牌,以确保用户...
在Backbone中设置这个的最简单方法是什么?我猜测唯一的方法是覆盖Backbone.sync,但代码会是什么样子?CoffeeScript首选.
还有两件事
1. /login如果我得到403: Access Forbidden Error
2,我想将用户重定向到2.我在应用程序引导时拉出包含来自localStorage的令牌的用户模型
3.我有一个baseModel和baseCollection,所有模型/集合来自
jac*_*cnr 18
Backbone使用jQuery的$ .ajax,因此您可以使用$ .ajaxSetup "为将来的Ajax请求设置默认值":
$.ajaxSetup({
headers: {
"accept": "application/json",
"token": YOUR_TOKEN
}
});
Run Code Online (Sandbox Code Playgroud)
更新:这个想法的改进(感谢@Glen)是每次使用$ .ajaxSend检查是否存在令牌,然后在请求的标头中设置它:
$(document).ajaxSend(function(event, request) {
var token = App.getAuthToken();
if (token) {
request.setRequestHeader("token", token);
}
});
Run Code Online (Sandbox Code Playgroud)
App.getAuthToken()是Backbone应用程序中的一个功能.
Sim*_*ias 11
你可以这样做:
var _sync = Backbone.sync;
Backbone.sync = function(method, model, options) {
if( model && (method === 'create' || method === 'update' || method === 'patch') ) {
options.contentType = 'application/json';
options.data = JSON.stringify(options.attrs || model.toJSON());
}
_.extend( options.data, {
"access_token": "some-token"
});
return _sync.call( this, method, model, options );
}
Run Code Online (Sandbox Code Playgroud)
并且只是监听fetch/save方法的失败事件以将用户重定向到 /login
model.fetch().fail( /* redirect */ )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9286 次 |
| 最近记录: |