Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
混合ASP.NET WebForms和MVC授权_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Authorization_Webforms - Fatal编程技术网

混合ASP.NET WebForms和MVC授权

混合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”类,但是当我尝试查看页面时,我会看到一个“拒绝访问”页面 如果

我正在尝试将一些MVC3功能混合到现有的WebForms应用程序中。我已经遵循了一些指南,并得到了一切设置和工作,除了授权块。现有应用程序的根web.config上有
,每个子文件夹都有自己的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继续使用属性。虽然我没有亲自尝试过混合,但我不明白为什么它不起作用。它使用相同的系统。我在这里介绍身份: