如何将未经身份验证的 Blazor Azure AD 用户重定向到与经过身份验证的用户不同的页面?
How can I redirect unauthenticated Blazor Azure AD users to a different page than authenticated users?
我正在使用 Visual Studio 2019 中包含的 Blazor Server 模板。
在使用本地身份验证的模板应用程序中,当我查看未经身份验证的页面时,AuthorizeView 标签按预期工作,导航栏上的日志 in/out 按钮根据这些标签动态显示。我可以作为客人查看柜台和天气预报页面。
在使用 Azure AD 身份验证的模板应用程序中,每当我尝试查看未经身份验证的页面时,我都会被重定向到 Microsoft 登录提示。我仍然可以使用 AuthorizeView 标签在导航栏中动态显示组件,但我希望能够以访客身份查看计数器和天气预报页面,而不会被重定向。
有什么办法可以实现吗?我可能在 App.razor 中遗漏了什么吗?
编辑:
如果我使用导航栏注销 link,然后使用浏览器返回,我可以在未经授权的情况下查看页面。但是当我刷新页面时,我被送回 https://login.microsoftonline.com/。是什么原因造成的?我想在不被重定向的情况下查看未经授权的主页。
您看到的行为是设计使然。
要更改它,您可以在 Startup.Configure 中进行此更改:
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
//options.Filters.Add(new AuthorizeFilter(policy));
});
(当然,如果您想保持这种方式,则将此代码减少到 services.AddControllersWithViews();
。)
进行此更改后,您将不得不使用 @attribute [Authorize]
或 <AuthorizeView>
阻止私人页面,并且不会自动重定向到登录页面。
我正在使用 Visual Studio 2019 中包含的 Blazor Server 模板。
在使用本地身份验证的模板应用程序中,当我查看未经身份验证的页面时,AuthorizeView 标签按预期工作,导航栏上的日志 in/out 按钮根据这些标签动态显示。我可以作为客人查看柜台和天气预报页面。
在使用 Azure AD 身份验证的模板应用程序中,每当我尝试查看未经身份验证的页面时,我都会被重定向到 Microsoft 登录提示。我仍然可以使用 AuthorizeView 标签在导航栏中动态显示组件,但我希望能够以访客身份查看计数器和天气预报页面,而不会被重定向。
有什么办法可以实现吗?我可能在 App.razor 中遗漏了什么吗?
编辑:
如果我使用导航栏注销 link,然后使用浏览器返回,我可以在未经授权的情况下查看页面。但是当我刷新页面时,我被送回 https://login.microsoftonline.com/。是什么原因造成的?我想在不被重定向的情况下查看未经授权的主页。
您看到的行为是设计使然。
要更改它,您可以在 Startup.Configure 中进行此更改:
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
//options.Filters.Add(new AuthorizeFilter(policy));
});
(当然,如果您想保持这种方式,则将此代码减少到 services.AddControllersWithViews();
。)
进行此更改后,您将不得不使用 @attribute [Authorize]
或 <AuthorizeView>
阻止私人页面,并且不会自动重定向到登录页面。