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

标签 asp.net asp.net-mvc asp.net-mvc-3

我开始将 ASP.NET Webforms 应用程序迁移到 ASP.NET MVC 3。该应用程序有一个可供所有用户(也包括匿名用户)访问的公共(public)区域和几个只能由经过身份验证的用户访问的区域,这些用户是担任特定角色。

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 等文件夹,以便将所有逻辑和标记放在一起?

感谢反馈!

最佳答案

Do such web.config files with authorization settings still work in MVC on folder basis

它们可以但不应使用。

If not, is there another way to apply authorization requirements to all pages in a folder?

在 ASP.NET MVC 中没有文件夹的概念。有 Controller 、模型和 View 。还有areas .因此,您可以创建一个客户区域并拥有一个基础 Controller ,该区域中的所有 Controller 都源自该基础 Controller 。然后,您将使用 [Authorize] 属性装饰这个基本 Controller 。这样,所有派生的 Controller 和操作都需要用户获得授权才能访问它们。您不需要使用区域来实现此目的。您仍然可以在主要区域中使用此属性装饰一个基本 Controller ,并拥有所有需要身份验证的 Controller 。

这是一个 blog post你可以看看 about authorization in ASP.NET MVC。

关于asp.net - 将授权逻辑从 ASP.NET Webforms 迁移到 ASP.NET MVC3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928440/

相关文章:

Jquery UI 自动完成如何将多个值发送到服务器端?

asp.net - 子字符串的多个长度?

c# - LINQ to SQL 比较性能

asp.net-mvc - Ajax.BeginForm 没有做它应该做的事情?

c# - 如何在来自 View 的 View 值中显示标签

c# - 我如何访问 ASP.NET MVC 3 模型中的虚拟目录?

c# - mvc 3 中的 resx 本地化

c# - 在 sqldatasource 中读取 sql 模式

c# - 捕获SQL连接错误并重试

asp.net-mvc - 是否可以用另一个值更改 url 路由参数