我在这里找不到很多东西.大多数示例应用程序只是不谈论安全性等.假设用户将使用休息的API调用进行身份验证.如何将应用程序的结构设计为照顾身份验证[也是授权].指向示例应用程序的指针会很棒.请在单页应用程序和正常应用程序中添加视图.
[我相信每一个观点都应该照顾它]
[我相信每一个观点都应该照顾它]
解决方法
几个月前遇到同样的问题,一个单一的应用程序消耗基于REST的api.在找到答案后,我想出的是使用HTTP现有的401和403错误.我的api返回这些错误.然后通过使用扩展错误处理模型来处理这些错误,并通过路由器
navigate功能将其路由到我的登录,捕获了异常.
var ErrorHandlerModel = Backbone.Model.extend({ initialize: function(attributes,options) { options || (options = {}); this.on("error",this.errorHandler); this.init && this.init(attributes,options); },errorHandler: function(model,error) { if (error.status == 401 || error.status == 403) { app.history.navigate('login',true); } } });
事后看来,尽管我认为使用全局jquery ajaxError功能会更好一些.上面的代码片段基于类似的question posted here几个月前.
我还必须覆盖主板的默认提取行为,所以我可以用ogin触发一个错误,以捕获包含在api的json响应中的响应变量.
var Login = Backbone.Model.extend({ urlRoot: '/login',parse: function(resp,xhr) { if (resp.response == 'success') { app.history.navigate('dashboard',true); } else { this.trigger('loginError'); } return false; } });