在MVC Web应用程序中实现安全系统可以使用哪种设计方法,或者已经存在哪些新方法?
可能存在模式,最佳实践,例如在一些流行语言中,例如Java,.Net还是什么? 在哪个级别更好地实现它:模型或控制器或它们之间的东西?
我面对这种原始方法导致在许多控制器或模型之间传播安全检查,具体取决于实现,与级别代码混合。 但对我来说,以更好的方式设计安全性的方式并不明显。
我有一个MVC应用程序。 我需要灵活的访问权限系统。 我有类别和类别的层次结构。 某些用户可以编辑/查看/添加/删除一组类别,另一个用户 - 其他类别。 还需要根据用户角色不应从DB检索某些模型字段(应返回null) 管理员应该能够分配不同的访问权限。
答案 0 :(得分:1)
您应该使用.Net的内置成员船提供商。默认情况下,新的MVC 3 Internet应用程序Visual Studio项目模板将为您提供基本的登录代码。点击visual studio中的“管理”您的站点按钮将为您提供管理用户和角色的Web界面。创建用户/角色,然后在Controller类定义或方法定义上定义[Authorize(Roles =“Admin,Users”)]。不要像在Asp.Net Web窗体应用程序中那样定义URL访问,因为有多个URL可以映射到单个位置。请改用Authorize属性。
另请查看我的回复: What features do I need to have before I open an ASP.Net app onto the internet?
此外,请确保在视图中使用Html.AntoForgeryToken,并在[HttpPost]控制器方法上使用[ValidateAntiForgeryToken](即您发回的任何方法)