控制器操作具有不同的授权级别是不好的做法吗?

时间:2012-05-02 08:27:38

标签: asp.net-mvc asp.net-mvc-3 single-responsibility-principle

我们正在开发一个网站,我们有一个控制器,可以为一个模型处理CRUD,例如Country。仅允许管理员执行CRUD操作。但是,我们还希望控制器提供一个JSON选择实体列表来填充下拉列表。这种模式贯穿整个应用程序。

这意味着我们无法使用标准授权属性来限制对控制器条目的管理员的访问。我们需要使用特定的authorize属性来装饰每个动作。

我们是否需要在一个控制器上使用多个授权级别?这是否表明我们违反了SRP?

处理这样一个事实的最佳模式是什么?许多控制器与需要仅由Admin更新但为所有授权用户提供JSON选择列表的实体相关?

由于

1 个答案:

答案 0 :(得分:2)

执行此操作的唯一问题是风险,您可能会忘记保护应该仅为管理员的操作。

解决此问题的首选方法是在您的网站上设置一个仅限管理员的区域(使用MVC区域)。

http://msdn.microsoft.com/en-us/library/ee671793.aspx

http://sankarsan.wordpress.com/2012/04/14/asp-net-mvc-areasa-better-way-to-structure-the-application/

这样整个www.site.com/admin部分都将受到管理员保护。