将授权逻辑从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文件夹的基础上工作? Customers
, Suppliers
等下面放置单独的Controllers
, Views
, Models
子文件夹,以便将所有逻辑和标记紧密放在一起? 感谢您的反馈!
使用授权设置做这样的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