Asp.net mvc 当用户在使用ADFS和ASP.NET MVC时未经授权时,将用户重定向到自定义页面
我的ADFS配置排除了不属于一组组的所有用户 在某些情况下,用户使用ADF登录到web应用(web应用B),并获得一组声明,其中不包含web应用a中接受的任何组 然后,用户转到web应用程序A,被重定向到ADFS,用户已经有了一个用于ADFS的cookie,因此不会要求他提供新的用户/密码组合,并且他会立即将相同的声明(web应用程序B的声明)重定向到web应用程序A 这将触发web应用程序a中的401,这是正确的 我们如何将用户重定向到一个页面来解释刚才发生的事情(使用“使用不同帐户登录”按钮) 作为参考,排除不属于一组组的所有用户的web.config配置为:Asp.net mvc 当用户在使用ADFS和ASP.NET MVC时未经授权时,将用户重定向到自定义页面,asp.net-mvc,adfs,Asp.net Mvc,Adfs,我的ADFS配置排除了不属于一组组的所有用户 在某些情况下,用户使用ADF登录到web应用(web应用B),并获得一组声明,其中不包含web应用a中接受的任何组 然后,用户转到web应用程序A,被重定向到ADFS,用户已经有了一个用于ADFS的cookie,因此不会要求他提供新的用户/密码组合,并且他会立即将相同的声明(web应用程序B的声明)重定向到web应用程序A 这将触发web应用程序a中的401,这是正确的 我们如何将用户重定向到一个页面来解释刚才发生的事情(使用“使用不同帐户登录”按钮
<authentication mode="None" />
<authorization>
<allow roles="GroupA,GroupB,GroupC,GroupD"/>
<deny users="*" />
</authorization>
为401指定要重定向到的页面:
<customErrors mode="On">
<error code="401" path="401.cshtml" />
</customErrors>
请在401页中填写授权内容。指定401的重定向页面:
<customErrors mode="On">
<error code="401" path="401.cshtml" />
</customErrors>
请在401页面中执行授权操作。如果有人必须处理此问题,我将以这种方式显示自定义的未经授权页面 创建一个自定义的未授权页面,可能会在那里放置一个注销按钮,我将我的页面放在ErrorController中,并将该操作命名为未授权 第一个“白名单”是web.config中的自定义“您未经授权”页面
<location path="Error/Unauthorized">
<system.web>
<authorization>
<allow Users="*"/>
</authorization>
</system.web>
</location>
System.Web.virtualPath实用性在这里非常有用,因为它扩展了~并生成完整的url
location头只是浏览器在收到302响应时使用的头的名称。然后,它将对url执行一个请求,其中url是头值
我确信,WSFederationAuthenticationModule
可以通过web.config中的设置满足这种情况,但我真的找不到它
以下是web.config中的所有设置,以供参考:
<configuration>
...
<location path="Error/Unauthorized">
<system.web>
<authorization>
<allow Users="*"/>
</authorization>
</system.web>
</location>
<location path="Home/Logout">
<system.web>
<authorization>
<allow Users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authentication mode="None" />
<authorization>
<allow roles="GroupA,GroupB,GroupC,GroupD"/>
<deny users="*" />
</authorization>
...
</system.web>
<system.identityModel>
....
...
...
....
如果有人必须处理此问题,我就是这样显示自定义未经授权的页面的
创建一个自定义的未授权页面,可能会在那里放置一个注销按钮,我将我的页面放在ErrorController中,并将该操作命名为未授权
第一个“白名单”是web.config中的自定义“您未经授权”页面
<location path="Error/Unauthorized">
<system.web>
<authorization>
<allow Users="*"/>
</authorization>
</system.web>
</location>
System.Web.virtualPath实用性在这里非常有用,因为它扩展了~并生成完整的url
location头只是浏览器在收到302响应时使用的头的名称。然后,它将对url执行一个请求,其中url是头值
我确信,WSFederationAuthenticationModule
可以通过web.config中的设置满足这种情况,但我真的找不到它
以下是web.config中的所有设置,以供参考:
<configuration>
...
<location path="Error/Unauthorized">
<system.web>
<authorization>
<allow Users="*"/>
</authorization>
</system.web>
</location>
<location path="Home/Logout">
<system.web>
<authorization>
<allow Users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authentication mode="None" />
<authorization>
<allow roles="GroupA,GroupB,GroupC,GroupD"/>
<deny users="*" />
</authorization>
...
</system.web>
<system.identityModel>
....
...
...
....
不幸的是,这不起作用。在这种情况下使用的实际错误代码是401.2,它似乎与customErrors的401不匹配。另外,我认为它是重定向
而不是路径
,并且您不能直接重定向到.cshtml
页面(没有http处理程序)。控制器操作可以(redirect=“Error/Unauthorized”),但再次尝试,重定向从未发生。不幸的是,这不起作用。在这种情况下使用的实际错误代码是401.2,它似乎与customErrors的401不匹配。另外,我认为它是重定向
而不是路径
,并且您不能直接重定向到.cshtml
页面(没有http处理程序)。控制器操作可以(redirect=“Error/Unauthorized”),但再次尝试,重定向从未发生。