Authentication 什么';s管理身份验证(会话)的最佳设计/体系结构实践&;backbone.js应用程序中的授权
我在任何地方都找不到这方面的内容。大多数示例应用程序都不涉及安全性等问题。假设用户将使用基于rest的API调用进行身份验证。应用程序的结构应如何处理身份验证[以及授权]。一个指向示例应用程序的指针就好了。请按单页应用程序和普通应用程序添加视图。Authentication 什么';s管理身份验证(会话)的最佳设计/体系结构实践&;backbone.js应用程序中的授权,authentication,backbone.js,authorization,Authentication,Backbone.js,Authorization,我在任何地方都找不到这方面的内容。大多数示例应用程序都不涉及安全性等问题。假设用户将使用基于rest的API调用进行身份验证。应用程序的结构应如何处理身份验证[以及授权]。一个指向示例应用程序的指针就好了。请按单页应用程序和普通应用程序添加视图。 [我相信每个观点都应该考虑它]我同意穆的评论。关于身份验证,几乎没有什么可谈的 如何使用发回服务器的标准HTML应用程序处理身份验证?这样做,因为这是应该做的 关于授权,有更多的讨论,但不多。本质上,您只向用户发送允许他们看到的内容。除非绝对需要,否则
[我相信每个观点都应该考虑它]我同意穆的评论。关于身份验证,几乎没有什么可谈的 如何使用发回服务器的标准HTML应用程序处理身份验证?这样做,因为这是应该做的 关于授权,有更多的讨论,但不多。本质上,您只向用户发送允许他们看到的内容。除非绝对需要,否则不能在浏览器中执行授权或身份验证代码。在我的经验中,这从来不是绝对需要的 浏览器中的JavaScript不安全,因此不要在浏览器中执行依赖于身份验证和授权的操作
我在这里写了一篇关于这方面的小文章:您完全正确,大多数示例根本不涉及安全性。因此,我没有一个很好的样本可以给你们指出。我只能告诉你我们是如何构建自己的东西的:
最终,服务器必须在每次请求时再次检查用户的权限(因为避开客户端安全非常容易),但是好的用户体验要求客户端知道我不是管理员,这样它就可以为我呈现最佳的用户界面表现。几个月前,在使用基于REST的api的单页应用程序中遇到了同样的问题。在搜索答案后,我想到的是使用HTTP现有的401和403错误。我让api返回这些错误。然后通过使用扩展的错误处理模型来处理这些错误来捕获异常,并通过路由器功能将它们路由到我的登录名
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函数会更好。上面的片段是基于几个月前的一个类似例子
我还必须重写backbones的默认获取行为,这样我就可以用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;
}
});
示例应用程序不谈论安全性,因为没有什么(如果有的话)主干特定于讨论。为了让我更清楚,我对在不损害安全性的情况下应用的身份验证/授权模式感兴趣。e、 g.我是否应该使用中介模式来保存会话/授权信息,并且每个视图都应该在呈现之前检查这些信息。还是应该用其他方法来解决这个问题