@page "/" <button @onclick="LogUsername">Log username</button> <p>@authMessage</p> @code { [CascadingParameter] private Task<AuthenticationState> authenticationStateTask { get; set; } private string authMessage; private async Task LogUsername() { var authState = await authenticationStateTask; var user = authState.User; if (user.Identity.IsAuthenticated) { authMessage = $"{user.Identity.Name} is authenticated."; } else { authMessage = "The user is NOT authenticated."; } } }
Set up the Task<
AuthenticationState>
cascading parameter using the AuthorizeRouteView and CascadingAuthenticationState components in the App
component (App.razor
):
<CascadingAuthenticationState> <Router AppAssembly="@typeof(Program).Assembly"> <Found Context="routeData"> <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" /> </Found> <NotFound> <LayoutView Layout="@typeof(MainLayout)"> <p>Sorry, there's nothing at this address.</p> </LayoutView> </NotFound> </Router> </CascadingAuthenticationState>
In a Blazor WebAssembly App, add services for options and authorization to Program.cs
:
builder.Services.AddOptions(); builder.Services.AddAuthorizationCore();
In a Blazor Server app, services for options and authorization are already present, so no further action is required.