繁体   English   中英

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

[英]Migrating authorization logic from ASP.NET Webforms to 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中运行?
  • 如果没有,是否有另一种方法将授权要求应用于文件夹中的所有页面?
  • 我是否仍然可以在单独的文件夹中组织各个区域,尤其是我可以将各个ControllersViewsModels子文件夹放在每个文件夹CustomersSuppliers等下面,以保持所有逻辑和标记紧密相连?

感谢您的反馈!

具有授权设置的此类web.config文件是否仍在基于文件夹的MVC中工作

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

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

在ASP.NET MVC中,没有文件夹的概念。 有控制器,模型和视图。 还有一些地区 因此,您可以创建一个Customers区域,并拥有一个基本控制器,该区域中的所有控制器都来自该控制器。 然后,您将使用[Authorize]属性修饰此基本控制器。 这样,所有派生的控制器和动作都需要授权用户才能访问它们。 您不需要使用区域来实现此目的。 您仍然可以在使用此属性修饰的主区域中具有基本控制器,并且具有需要身份验证的所有控制器。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM