[英]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中运行? Controllers
, Views
, Models
子文件夹放在每个文件夹Customers
, Suppliers
等下面,以保持所有逻辑和标记紧密相连? 感谢您的反馈!
具有授权设置的此类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.