将授权逻辑从ASP.NET Webforms迁移到ASP.NET MVC3

我正在开始将ASP.NET Webforms应用程序迁移到ASP.NET MVC 3.应用程序具有一个公共区域,所有用户(也包括匿名用户)都可以访问该区域,并且只有经过身份验证的用户才能访问这些区域角色。

WebForms项目的组织方式如下所示:

Root folder -> contains all public pages
 |
 --- Private subfolder -> contains a few pages for ALL authenticated users
      |
      --- Customers subfolder -> contains pages for users in role "Customer"
      --- Suppliers subfolder -> contains pages for users in role "Supplier"
      --- Internals subfolder -> contains pages for users in role "Internal"
           |
           --- Admins subfolder -> contains pages for users in role "Admin"
      etc.

目前,授权由位于不同子文件夹中的web.config文件管理。 例如Customers子文件夹包含以下web.config

<configuration>
    <system.web>
        <authorization>
            <allow roles="Customer" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

在ASP.NET Webforms中,不需要更多的配置。 此授权应用于Customers子文件夹中的所有页面。

将此结构迁移到ASP.NET MVC 3的最佳方式是什么? 或者更具体地说:

  • 使用授权设置做这样的web.config文件仍然在MVC文件夹的基础上工作?
  • 如果没有,是否有另一种方法将授权要求应用于文件夹中的所有页面?
  • 我是否仍然可以在不同的文件夹中组织不同的区域,尤其是我可以在每个文件夹CustomersSuppliers等下面放置单独的ControllersViewsModels子文件夹,以便将所有逻辑和标记紧密放在一起?
  • 感谢您的反馈!


    使用授权设置做这样的web.config文件仍然在MVC文件夹的基础上工作

    他们这样做,但不应该使用。

    如果没有,是否有另一种方法将授权要求应用于文件夹中的所有页面?

    在ASP.NET MVC中没有文件夹的概念。 有控制器,模型和视图。 也有地区。 因此,您可以创建一个Customers区域并拥有一个基本控制器,该区域中的所有控制器都来自该区域。 然后你会用[Authorize]属性修饰这个基础控制器。 通过这种方式,所有派生的控制器和操作都需要授权用户访问它们。 你不需要使用一个区域来实现这一点。 您仍然可以在用此属性装饰的主区域中拥有一个基础控制器,并拥有所有需要进行身份验证的控制器。

    这里有一篇博客文章,您可以查看一下ASP.NET MVC中的授权。


    保护MVC应用程序唯一受支持的方法是将[Authorize]属性应用于每个控制器和操作方法。

    这里是链接到微软Rick安德森的博客保护您的ASP.NET MVC 3应用程序

    链接地址: http://www.djcxy.com/p/90177.html

    上一篇: Migrating authorization logic from ASP.NET Webforms to ASP.NET MVC3

    下一篇: Custom security scenario in ASP.NET MVC