如何将未经身份验证的Blazor Azure AD用户重定向到与经过身份验证的用户不同的页面?

时间:2020-02-14 20:28:15

标签: azure-active-directory blazor blazor-server-side

我正在使用Visual Studio 2019附带的Blazor服务器模板。

在使用本地身份验证的模板应用程序中,当我查看未经身份验证的页面时,AuthorizeView标记将按预期工作,并且导航栏上的登录/注销按钮将基于这些标记动态显示。我能够以客人身份查看柜台和天气预报页面。

在使用Azure AD身份验证的模板应用程序中,每当我尝试未经身份验证查看页面时,都会重定向到Microsoft登录提示符。我仍然可以使用AuthorizeView标记在导航栏中动态显示组件,但是我想要做的是以访客身份查看计数器和天气预报页面,而无需重定向。

有什么办法可以做到这一点?我可能在App.razor中缺少某些内容吗?

编辑:

如果我使用导航栏链接注销,然后使用浏览器导航回去,则可以未经授权查看页面。但是,当我刷新页面时,我会被发送回https://login.microsoftonline.com/。是什么原因造成的?我想查看未经授权的主页而不进行重定向。

1 个答案:

答案 0 :(得分:0)

您看到的行为是设计使然。

要更改它,可以在Startup.Configure中进行此更改:

services.AddControllersWithViews(options =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    //options.Filters.Add(new AuthorizeFilter(policy));
});

(当然,当您想保持这种方式时,可以将其简化为services.AddControllersWithViews();。)

进行此更改后,您将不得不使用@attribute [Authorize]<AuthorizeView>阻止私人页面,并且不会自动重定向到登录页面。