针对不同地区的不同的身份验证模式(Different authentication mode for

2019-07-04 14:56发布

我有一个网站,我对工作的两个部分:使用正常的窗体身份验证一个,另一个使用基于HMAC认证。 基于一种形式的作品一样正常的(除非使用自定义成员资格提供)。

最无奈的是,在默认情况下,如果一个人决定使用窗体身份验证它会将所有401个响应的认证标签下的根Web.config中指定的loginUrl。 在努力将其关闭我的网站的HMAC部分我创建了一个单独的区域,这些控制器居住。但是,无论身在何处,我把一个<authentication mode="None"></authentication>标签(无论在该地区/视图Web.config中,我已设置在区域的文件夹,或下根Web.config一个位置标签一个Web.config(这样做实际上导致关于该标签不属于有一个错误))我不能似乎使这件事停止所有重定向到401S的loginUrl。

任何援助将不胜感激,因为这是让我撕了我的头发。

顺便说一句,这个问题已经被问不同的方式至少2 倍 ,无(可行)的反应。 而矿集中于设置认证模式为无,他们一般集中在改变用于路径角色(这在我的意见是更容易与做[Authorize(Roles="role1,role2,role3")]上的每个方法属性),其让我的问题有点不同。 如果这是不可能的,也请告诉我,让我能想出更好的办法来做到这一点。

Answer 1:

该认证元素(ASP.NET设置架构)只有在应用层面有效。 你不能在同一应用程序的不同认证方式。

你可以,但是,指定一个位置元素(ASP.NET设置架构)到一个特定的区域,并指定授权元素(ASP.NET设置架构),它里面是允许匿名用户。 您也可以放置在web.config文件的授权元素的应用程序的一个子目录下。

为了使用两个不同的身份验证方案 ,你必须到那个区域转换成一个单独的应用程序。 它可以,如果你愿意的话,仍然是父应用程序的孩子,但也有一些注意事项。 其中一个需要注意的地方,当然是会话状态不会在两个应用程序之间共享。

此外,请参阅内IIS继承父配置值嵌套ASP.NET“应用”? 问题和ASP.NET配置文件层次结构和继承 。



文章来源: Different authentication mode for different areas