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

Azure active directory 如何将未经身份验证的Blazor Azure AD用户重定向到与经过身份验证的用户不同的页面?,azure-active-directory,blazor,blazor-server-side,Azure Active Directory,Blazor,Blazor Server Side,我正在使用VisualStudio2019附带的Blazor服务器模板 在使用本地身份验证的模板应用程序中,当我在未经身份验证的情况下查看页面时,AuthorizeView标记会按预期工作,导航栏上的登录/退出按钮会根据这些标记动态显示。我可以作为客人查看柜台和天气预报页面 在使用Azure AD身份验证的模板应用程序中,每当我尝试在未经身份验证的情况下查看页面时,都会重定向到Microsoft登录提示符。我仍然能够使用AuthorizeView标签在导航栏中动态显示组件,但我希望能够作为来宾查

我正在使用VisualStudio2019附带的Blazor服务器模板

在使用本地身份验证的模板应用程序中,当我在未经身份验证的情况下查看页面时,AuthorizeView标记会按预期工作,导航栏上的登录/退出按钮会根据这些标记动态显示。我可以作为客人查看柜台和天气预报页面

在使用Azure AD身份验证的模板应用程序中,每当我尝试在未经身份验证的情况下查看页面时,都会重定向到Microsoft登录提示符。我仍然能够使用AuthorizeView标签在导航栏中动态显示组件,但我希望能够作为来宾查看计数器和天气预报页面,而不会被重定向

有没有办法做到这一点?我是不是在App.razor中遗漏了什么

编辑:


如果我使用导航栏链接注销,然后使用浏览器返回,我可以在未经授权的情况下查看页面。但是当我刷新页面时,我会被发送回。这可能是什么原因造成的?我想查看未经授权的主页而不被重定向。

您看到的行为是故意的

要更改它,您可以在启动内进行此更改。配置:

services.AddControllersWithViews(options =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    //options.Filters.Add(new AuthorizeFilter(policy));
});
(当然,如果希望保持这种方式,可以将此代码简化为
services.AddControllersWithViews();


通过此更改,您必须使用
@attribute[Authorize]
阻止私人页面,并且不会自动重定向到登录页面

你看到的行为是故意的

要更改它,您可以在启动内进行此更改。配置:

services.AddControllersWithViews(options =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    //options.Filters.Add(new AuthorizeFilter(policy));
});
(当然,如果希望保持这种方式,可以将此代码简化为
services.AddControllersWithViews();


通过此更改,您必须使用
@attribute[Authorize]
阻止私人页面,并且不会自动重定向到登录页面

我觉得Blazor路由器/身份验证功能有点漏洞。通常希望大多数应用程序都是安全的,但对于欢迎/帮助页面,有一到两个页面是不安全的。直接跳到“登录”通过B2C是非常糟糕的用户体验。我可以使用
[AllowAnonymous]
使其适用于ASP.NET核心MVC,可惜它不适用于BlazorI,感觉Blazor路由器/身份验证功能有点漏洞。通常希望大多数应用程序都是安全的,但对于欢迎/帮助页面,有一到两个页面是不安全的。直接跳到“登录”通过B2C是非常糟糕的用户体验。我可以使用
[AllowAnonymous]
让它在ASP.NET核心MVC上运行,可惜它不适用于Blazor