仅当我直接点击页面时才会出现 Backbone 的 401 错误
Get a 401 error with Backbone only when I hit a page directly
如果我直接从 url 栏点击页面,我的本地 Backbone 应用程序部署会出现 401 错误(实时测试部署会出现 500 错误)。当我请求基本路线时,我没有遇到问题,奇怪的是,当我单击将获取页面的按钮时,我也没有遇到问题。
视图是一个列出项目集合的数组。
我希望用户能够刷新页面。
我刚接触Backbone,所以我很难有效地调试。
我使用了 $(document).ajaxError
和 if (xhr.status == 401)
嵌套在其中被调用。但我不想调用登录路由,因为目标只是刷新页面。
下面是部分代码:
var MainRouter = Backbone.Router.extend({
initialize: function() {
return this.bind("all", this.change);
},
routes: {
"": "main",
"users": "users",
"user/:id": "user",
"stores": "stores",
"store/add": "addStore",
"store/edit/:id": "editStore",
"store/:id": "store"
},
dashboard: function() {
return ROOT.VIEW = new MainView();
},
stores: function() {
return ROOT.VIEW = new StoresView({
collection: new Stores()
});
},
store: function(id) {
return ROOT.VIEW = new StoreView({
model: new Store({
id: id
})
});
}
});
$((function(_this) {
return function() {
_this.USER = new Administrator();
_this.MAIN = new MainView({
model: _this.LOGIN = new LoginState()
});
$('#view').html(_this.MAIN.render().el);
_this.App = new MainRouter();
Backbone.history.start({
pushState: true
});
return $.ajaxSetup({
statusCode: {
401: function() {
localStorage.setItem('apiKey', null);
return location.reload();
}
}
});
};
})(this));
我们非常欢迎任何建议或建议。
谢谢!
看起来登录回调函数在这个过程中被调用得太晚了,也就是说在当然失败的请求之后。我用 jQuery 承诺修复了这个问题,还通过 Backbone.history.location.pathname 检查登录状态和当前路由。如果用户未登录并尝试直接连接到该页面,我只是将他重定向到项目的根目录,因为此应用程序中只有一个入口点。
如果我直接从 url 栏点击页面,我的本地 Backbone 应用程序部署会出现 401 错误(实时测试部署会出现 500 错误)。当我请求基本路线时,我没有遇到问题,奇怪的是,当我单击将获取页面的按钮时,我也没有遇到问题。 视图是一个列出项目集合的数组。 我希望用户能够刷新页面。
我刚接触Backbone,所以我很难有效地调试。
我使用了 $(document).ajaxError
和 if (xhr.status == 401)
嵌套在其中被调用。但我不想调用登录路由,因为目标只是刷新页面。
下面是部分代码:
var MainRouter = Backbone.Router.extend({
initialize: function() {
return this.bind("all", this.change);
},
routes: {
"": "main",
"users": "users",
"user/:id": "user",
"stores": "stores",
"store/add": "addStore",
"store/edit/:id": "editStore",
"store/:id": "store"
},
dashboard: function() {
return ROOT.VIEW = new MainView();
},
stores: function() {
return ROOT.VIEW = new StoresView({
collection: new Stores()
});
},
store: function(id) {
return ROOT.VIEW = new StoreView({
model: new Store({
id: id
})
});
}
});
$((function(_this) {
return function() {
_this.USER = new Administrator();
_this.MAIN = new MainView({
model: _this.LOGIN = new LoginState()
});
$('#view').html(_this.MAIN.render().el);
_this.App = new MainRouter();
Backbone.history.start({
pushState: true
});
return $.ajaxSetup({
statusCode: {
401: function() {
localStorage.setItem('apiKey', null);
return location.reload();
}
}
});
};
})(this));
我们非常欢迎任何建议或建议。
谢谢!
看起来登录回调函数在这个过程中被调用得太晚了,也就是说在当然失败的请求之后。我用 jQuery 承诺修复了这个问题,还通过 Backbone.history.location.pathname 检查登录状态和当前路由。如果用户未登录并尝试直接连接到该页面,我只是将他重定向到项目的根目录,因为此应用程序中只有一个入口点。