Asp.net 授权属性vs.config中的授权节点

Asp.net 授权属性vs.config中的授权节点,asp.net,security,asp.net-mvc-3,Asp.net,Security,Asp.net Mvc 3,我知道我可以使用web.config中的授权标记限制对ASP.NET MVC 3应用程序的访问 <authentication mode="Windows"></authentication> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" /> <authorization> <allow roles="My

我知道我可以使用web.config中的授权标记限制对ASP.NET MVC 3应用程序的访问

<authentication mode="Windows"></authentication> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" /> <authorization> <allow roles="MyDomain\MyGroup" /> <deny users="*" /> <deny users="?" /> </authorization> 问题是:它们是否是替代和等效的方法?我应该总是使用一种方法而不是另一种方法吗?我应该记住哪些要素

我知道我可以使用web.config中的授权标记限制对ASP.NET MVC 3应用程序的访问

<authentication mode="Windows"></authentication> <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" /> <authorization> <allow roles="MyDomain\MyGroup" /> <deny users="*" /> <deny users="?" /> </authorization> 不,不要在ASP.NET MVC中使用此选项

问题是:它们是否是替代和等效的方法


不,它们不是替代品。您不应该在ASP.NET MVC应用程序中使用web.config中的
标记,因为它基于路径,而MVC使用控制器操作和路由。在ASP.NET MVC中进行授权的正确方法是使用
[Authorize]
属性。

合理。请让我更好地理解:如果我不打算使用任何标记(即限制对整个应用程序的访问),为什么以及如何在web.config中定义授权可能是一个安全漏洞?@Arialdo Martini,在位置标记中指定一个路径:例如,您可以限制对
/admin
的访问。但在MVC中,您有路由。这些路由在Global.asax中定义。它们反映控制器和动作。因此,应该保护的是您的控制器和操作,而不是一些不存在的虚拟路径。是的,清除。如果我不使用任何位置标记,而只是为整个应用程序设置授权,该怎么办?我的意思是,如果我完全使用问题中报告的web.config,它不报告任何url或任何路由,会怎么样?这是否意味着存在安全漏洞?@Arialdo Martini,如果你想设置整个应用程序的授权,你可以使用全局操作过滤器。这确实是推荐的方法。