我开始将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
子文件夹,{{ 1}}等,以保持所有逻辑和标记紧密相连?感谢您的反馈!
答案 0 :(得分:3)
具有授权设置的此类web.config文件是否仍然可以在基于文件夹的MVC中运行
他们这样做但不应该使用。
如果没有,是否有其他方法可以将授权要求应用于文件夹中的所有页面?
在ASP.NET MVC中没有文件夹的概念。有控制器,模型和视图。还有areas。因此,您可以创建一个Customers区域,并拥有一个基本控制器,该区域中的所有控制器都来自该控制器。然后,您将使用[Authorize]
属性修饰此基本控制器。这样,所有派生的控制器和动作都需要授权用户才能访问它们。您不需要使用区域来实现此目的。您仍然可以在使用此属性修饰的主区域中拥有一个基本控制器,并且所有控制器都需要从中派生身份验证。
这是一个blog post,你可以看一下ASP.NET MVC中的授权。
答案 1 :(得分:1)
唯一支持的MVC应用程序安全保护方法是将 [授权] 属性应用于每个控制器和操作方法。
以下是Microsoft Rick Anderson博客link
的Securing your ASP.NET MVC 3 Application