asp.net-mvc – 在ASP.NET MVC应用程序中实现细粒度安全(即授权)
假设一个高速开发者的任务是建立一个由许多不同的人访问的银行业务应用程序.每个人都想要访问他或她自己的帐户信息,但不希望其他人访问它.我想知道在MVC应用程序中限制访问的最佳做法,以便只有拥有信息的用户(或管理员)可以访问它.
授权属性允许我们通过角色来限制.虽然这是一个起点,但似乎任何经过身份验证的用户都可以访问任何其他用户的信息. ActionFilters似乎提供了一个更精细的控制选项,可能用于完成任务.不过,我不清楚是否是推荐的做法. 欢迎任何指导或想法. 解决方法
ActionFilter可能是一个很好的起点,但根据您的架构,您可能需要考虑外围防御是否足够好.
如果您基本上构建单层ASP.NET MVC应用程序(并且可能有完全合理的原因可以这样做),那么ActionFilter将提供足够的防御,同时非常简单的应用. 另一方面,如果您的应用程序是多层应用程序,则深度防御更合适.在这种情况下,您应该考虑在域模型中应用授权逻辑,或者甚至在数据访问层中应用授权逻辑.这将确保如果您开发了基于相同域模型(例如Web服务)的其他应用程序,则授权逻辑仍然适用. 无论你做什么,我强烈建议您将实际的授权实施基于IPrincipal. 在一个更具体的注意事项上,您在这里询问的是最好的基于ACL的授权建模:在每个用户配置文件上设置ACL,默认情况下只允许访问用户他/她自己和管理员.如果/当您稍后需要扩展应用程序以允许委派访问其他用户的配置文件(我不知道在特定情况下是否远程实现),您可以通过向ACL添加新条目来简单地执行此操作. 在这种情况下,评估访问涉及检索所请求资源的ACL,并检查当前用户(IPrincipal)是否包含在该ACL中.这样的操作很可能涉及到进程外操作(在数据库中查找ACL),因此将其隐藏在ActionFilter后面作为应用程序的隐含部分,听起来可能会隐藏一些性能问题.在这种情况下,我会考虑使授权模型更具说明力/可见性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 从ASP.NET 3.5应用程序在IFRAME中运行GWT应用程序(包括Appl
- Asp.net Web API:控制器上未找到任何操作
- asp.net-mvc – ASP.NET MVC – Model.OrderBy Date无效
- asp.net – 从服务器获取数据而不延长会话超时
- asp.net-mvc – 我应该每个请求使用一个HttpClient实例来处
- asp.net-mvc – 使用jQuery ajax表单提交失败的ValidateAnt
- entity-framework – 导航属性过滤器
- asp.net – 我可以在Visual Studio 2008中使用MVC3吗?
- asp.net-mvc – IIS7 – 密码保护开发服务器
- asp.net-mvc – 类库中的控制器和视图
- ASP.NET MVC – 将外部模型传递给编辑器模板
- asp.net – 如何从相同的解决方案的MVC项目调试W
- asp.net – 在C#中解码Base64字节数组到图像
- asp.net – 将JSON发布到Controller
- asp.net-mvc-3 – MVC3 Webgrid的服务器端分页
- asp.net – LinkBut??ton不会在click()上调用
- asp.net-mvc – 是否有一个ASP MVC与JSTL标签等效
- asp.net-mvc – 将DropDownList绑定到MVC视图中
- asp-classic – 使用Webmatrix Razor替换经典ASP
- .net – 我们如何在aspx页面中的用户控件上使用必