混合ASP.NET WebForms和MVC授权
我正在尝试将一些MVC3功能混合到现有的WebForms应用程序中。我已经遵循了一些指南,并得到了一切设置和工作,除了授权块。现有应用程序的根web.config上有混合ASP.NET WebForms和MVC授权,asp.net,asp.net-mvc,asp.net-mvc-3,authorization,webforms,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Authorization,Webforms,我正在尝试将一些MVC3功能混合到现有的WebForms应用程序中。我已经遵循了一些指南,并得到了一切设置和工作,除了授权块。现有应用程序的根web.config上有,每个子文件夹都有自己的web.config,允许访问中特定角色的页面 我的新理解是,这种风格的不能/不应该在控制器上使用,而应该使用Authorize属性。我已经用[Authorize(Roles=“AdminRole”)]装饰了我的测试“HomeController”类,但是当我尝试查看页面时,我会看到一个“拒绝访问”页面 如果
,每个子文件夹都有自己的web.config,允许访问中特定角色的页面
我的新理解是,这种风格的不能/不应该在控制器上使用,而应该使用Authorize
属性。我已经用[Authorize(Roles=“AdminRole”)]
装饰了我的测试“HomeController
”类,但是当我尝试查看页面时,我会看到一个“拒绝访问”页面
如果我将root web.config改为
,则页面可以正常工作。这是否意味着我添加到控制器的属性正在工作,但根web.config设置优先于它?我不想弄乱我们现有的授权内容,因为这个网站已经建立得很好了,我只是想加入MVC。我错过什么了吗?感谢您提供的任何见解。啊,这有点棘手,因为您正试图在已经使用Web表单的应用程序中使用MVC安全性。如果这是纯mvc,那么选择很简单。如果你不能将mvc功能拉到一个单独的应用程序中,那么这会让你有点为难
我的第一个建议是尝试提取代码。如果您使用MVC仅提供restful功能,那么还可以查看MVC4 web api,为您的应用程序提供api,并在它们之间共享所使用的组件,这些组件需要将它们从web应用程序中提取到域库或其他适当命名的库中
尽管如此,还不能100%确定allow users=“*”是否按预期工作,但我相信确实如此。测试非常简单,只需将Roles=“AdminRole”更改为Roles=“placeholder”,然后重试
但设置此选项会终止其余的身份验证,因此一个想法是将所有mvc路由放在特定url下,例如“/api/”并允许web.config中的*指向该路径,然后在所有控制器方法上使用mvc的安全性。这对您的主web应用程序的影响很小。显然这是个坏主意-嗯……当我切换到
Roles=“placeholder”
时,我不会得到“拒绝访问”页面,我只会得到一个带有401代码的空响应(这很有意义)。我认为你的建议行得通,但没有我所希望的那么完美。在标记为“已解决”之前,将此项保留一段时间,以防有其他方法进行此项操作。亚当-是否有任何新的指导?我在使用MVC5时,WebForms也遇到了同样的情况-@SB2055我的指导是升级到Identity,对于web表单,遵循这一点:mvc继续使用属性。虽然我没有亲自尝试过混合,但我不明白为什么它不起作用。它使用相同的系统。我在这里介绍身份: