asp.net-web-api – Hot Towel / Durandal / Breeze.js:如何垂
我是整个客户端SPA世界的新手.我正在使用上述技术,这似乎很有前景.然而,我无法轻易克服的一个巨大障碍是缺乏内置安全性.我不得不手动推出用户授权,恕我直言应该是框架的一部分.
现在我已对其进行了排序,我对垂直安全性感到非常头疼:一个用户登录但可以通过更改浏览器控制台中的一些参数轻松访问其他用户的信息.我可以在每次调用时传递userId,然后将其与服务器上的那个进行比较,但我希望有一个总体解决方案,不会污染用户ID的微风数据调用. 例如,假设有来自数据服务的调用,如下所示: function getItems(){ var query = breeze.EntityQuery.from('Items').expand("Person"); return manager.executeQuery(query); } 这将得到所有项目,不好.所以让我们用userId来限制: function getItems(userId){ var query = breeze.EntityQuery.from('Items').where("userId","==",authentication.userId).expand("Person"); return manager.executeQuery(query); } 在第二个示例中,我们从身份验证服务获取userId,该服务在用户登录时存储userId.但是,恶意用户可以轻松访问浏览器控制台并更改该值. 当然,我可以使用withParameters(…)传递userId并将其与服务器上的当前版本进行比较,但是我必须为每次调用执行此操作,这似乎不对.有没有更好的方法来保护具有可信用户ID的呼叫? 解决方法
@Ali – 我理解你的痛苦和关心.您有权担心依赖于URL中传递的信息的任何形式的所谓安全性.幸运的是,您的问题有很好的答案,Breeze应用程序可以很好地与他们合作.
例如,你研究过ASP.NET Breeze/Knockout Template吗?它使用Forms Auth进行身份验证,并使用[Authorize]属性保护Web API控制器.只有登录用户才能访问任何控制器方法. 该身份验证还设置Web API控制器通过其User属性提供的IPrincipal.您将看到User传递给TodoRepository的构造函数.在该存储库中,您将找到限制查询的保护逻辑,并将其保存到属于请求用户的Todo信息. 看看网络流量.您将无法在URL或请求/响应正文中找到任何用户标识信息.您将在标头中看到加密的身份验证cookie.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何在WCF服务中返回值后继续处理
- asp.net – 运行时从Microsoft.AspNet.WebApi.HelpPage版本
- ASP.Net,C#.Net和VB.Net之间的区别?
- 基于 Roslyn 实现一个简单的条件解析引擎
- asp.net – 我应该将哪一个用于“匿名用户身份”? “特定用
- asp.net-mvc – 具有Fluent nHibernate和Ninject的多租户.每
- 自动挡换手动挡:在 ASP.NET Core 3.0 Middleware 中手动执
- asp.net – 无法加载mysql.web程序集
- asp.net-mvc – 如何检测不引人注目的验证是否成功?
- ASP.NET:web.config在哪里/如何缓存?
- asp.net – 菜单控件生成的js导致Web窗体中的Sys
- asp.net-mvc – 与MVC一起使用的学习实体框架,首
- asp.net-mvc – 跨应用程序进行表单身份验证的Se
- asp.net – 会话超时在IIS 7中如何工作?
- asp.net-mvc – 使用ASP.NET MVC进行消防和遗忘
- asp.net – 为自定义UserControl提供呈现HTML中的
- ASP.NET jQuery AutoComplete – 首次搜索后文本
- asp.net – 将任何UI连接到我的应用程序
- asp.net-mvc – 异步使用ASP.NET MVC中的WebClie
- asp.net-web-api – webapi批处理和委托处理程序