如何限制对MVC中的Controller或文件夹的访问?

时间:2012-10-04 08:30:43

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership

我使用Asp.Net MVC 3,C#和ApplicationServices Membership(起诉MS Sql 2008 db的标准方式)。

我的文件夹结构是

CONTROLLERS
-- PageAController.cs
-- ADMIN
   -- PageBController.cs

我有一些角色为“AdminRole”的用户,有些没有关联的规则(匿名)。

我希望拒绝访问特定的控制器,并显示PageAController.cs的LOGIN页面以及文件夹ADMIN中的所有控制器,以查找不具有“AdminRole”的用户相关联。

  • 走的路是什么?
  • 我需要设置Web.Config ......怎么样?

1 个答案:

答案 0 :(得分:9)

希望这有帮助

Use AuthorizeAttribute

  

您无法使用路由或web.config文件来保护您的MVC   应用。保护MVC应用程序的唯一受支持的方法是   将[Authorize]属性应用于每个控制器和操作   方法(登录/注册方法除外)。安全   基于当前区域的决定是一个非常糟糕的事情,并将开放   您的漏洞应用

[Authorize(Roles="AdminRole")]
public class PageAController
{

}

[Authorize(Roles="AdminRole,AnotherRole")]
public class PageBController
{

}