我正在使用Visual Studio 2019附带的Blazor服务器模板。
在使用本地身份验证的模板应用程序中,当我查看未经身份验证的页面时,AuthorizeView标记将按预期工作,并且导航栏上的登录/注销按钮将基于这些标记动态显示。我能够以客人身份查看柜台和天气预报页面。
在使用Azure AD身份验证的模板应用程序中,每当我尝试未经身份验证查看页面时,都会重定向到Microsoft登录提示符。我仍然可以使用AuthorizeView标记在导航栏中动态显示组件,但是我想要做的是以访客身份查看计数器和天气预报页面,而无需重定向。
有什么办法可以做到这一点?我可能在App.razor中缺少某些内容吗?
编辑:
如果我使用导航栏链接注销,然后使用浏览器导航回去,则可以未经授权查看页面。但是,当我刷新页面时,我会被发送回https://login.microsoftonline.com/。是什么原因造成的?我想查看未经授权的主页而不进行重定向。
答案 0 :(得分:0)
您看到的行为是设计使然。
要更改它,可以在Startup.Configure中进行此更改:
services.AddControllersWithViews(options =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
//options.Filters.Add(new AuthorizeFilter(policy));
});
(当然,当您想保持这种方式时,可以将其简化为services.AddControllersWithViews();
。)
进行此更改后,您将不得不使用@attribute [Authorize]
或<AuthorizeView>
阻止私人页面,并且不会自动重定向到登录页面。