services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie();
services.AddAuthorization(options => { options.AddPolicy("AdminOnly", policy => policy.RequireClaim("IsAdmin")); });
NavigationManager.NavigateTo("/login", true);
var authenticationState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); if (!authenticationState.User.Identity.IsAuthenticated) { NavigationManager.NavigateTo("/login"); }
protected override async Task OnInitializedAsync() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); var user = authState.User; if (!await AuthorizationService.AuthorizeAsync(user, "AdminOnly")) { NavigationManager.NavigateTo("/access-denied"); } }
注意:在Blazor WebAssembly中,重定向到登录页面时显示异常可能是因为旧版的Microsoft.Extensions.Http库与最新版的Blazor WebAssembly不兼容。解决方法是升级Microsoft.Extensions.Http到最新版本。