Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
C# 不同区域的不同身份验证模式_C#_.net_Asp.net Mvc 3_Web Config_Asp.net Mvc 3 Areas - Fatal编程技术网

C# 不同区域的不同身份验证模式

C# 不同区域的不同身份验证模式,c#,.net,asp.net-mvc-3,web-config,asp.net-mvc-3-areas,C#,.net,Asp.net Mvc 3,Web Config,Asp.net Mvc 3 Areas,我正在处理的网站有两部分:一部分使用普通形式的身份验证,另一部分使用基于HMAC的身份验证。基于表单的服务与普通服务一样工作(除了使用自定义成员资格提供程序) 最令人沮丧的是,默认情况下,如果决定使用表单身份验证,它会将所有401个响应重定向到根Web.config中authentication标记下指定的loginUrl。为了关闭我站点的HMAC部分,我创建了一个单独的区域,这些控制器居住在其中。然而,无论我在哪里放置一个没有(可行)响应的。虽然我的重点是将身份验证模式设置为“无”,但他们的重

我正在处理的网站有两部分:一部分使用普通形式的身份验证,另一部分使用基于HMAC的身份验证。基于表单的服务与普通服务一样工作(除了使用自定义成员资格提供程序)

最令人沮丧的是,默认情况下,如果决定使用表单身份验证,它会将所有401个响应重定向到根Web.config中authentication标记下指定的loginUrl。为了关闭我站点的HMAC部分,我创建了一个单独的区域,这些控制器居住在其中。然而,无论我在哪里放置一个没有(可行)响应的
。虽然我的重点是将身份验证模式设置为“无”,但他们的重点通常是更改路径的角色(在我看来,使用每个方法上的
[Authorize(roles=“role1,role2,role3”)]
属性更容易做到),这使我的问题有点不同。如果这是不可能的,也请告诉我,以便我能找到更好的方法来做到这一点。

仅在应用程序级别有效同一应用程序中不能有不同的身份验证模式。

但是,您可以指定一个特定区域的名称,并在其中指定一个允许匿名用户的名称。您还可以在应用程序的子目录下的web.config文件中放置授权元素

为了使用两种不同的身份验证方案,您必须将该区域转换为单独的应用程序。如果您愿意,它仍然可以是父应用程序的子应用程序,但是有一些警告。当然,需要注意的一点是,两个应用程序之间不会共享会话状态


此外,请参见问题和。

2013年12月MVC5时代的情况是否仍然如此?@Kjensen,是的,这是新的IIS管道模型的固有限制。如果必须从两个不同的来源进行身份验证,则可以使用表单身份验证并编写自定义成员身份提供程序。不支持同时启用窗体和Windows身份验证。