Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4050

.NET 9 Blazor Web App CascadingCascadingAuthenticationState always false

$
0
0

I created a new project using a .NET 9 Blazor Web App template.And followed the documentation for adding the authentication state provider.

My understanding from the documentation is that the all I need to do is add builder.Services.AddCascadingAuthenticationState();to my Program.cs which I did.

I am not using a custom AuthenticationStateProvider.

Then I should simply be able to cascade the authentication state into my page.[CascadingParameter] private Task<AuthenticationState>? authenticationState { get; set; }

Then await during my OnInitializedAsync() to receive my current users identity.

protected override async Task OnInitializedAsync(){    if (authenticationState is null)    {        authMessage = "Unable to determine authentication state.";        return;    }    var authState = await authenticationState;    var user = authState?.User;    if (user?.Identity is not null && user.Identity.IsAuthenticated)    {        authMessage = $"{user.Identity.Name} is authenticated.";    }    else    {        authMessage = "The user is NOT authenticated.";    }}

However IsAuthenticated always equals false. This is problematic because I have a two .NET 7 Blazor Server apps that were upgraded to .NET 8 that use cascading authentication. And they are able to receive the authenticated user via the authentication state.

What I have tried is adding more services to in my Program.cs

builder.Services.AddAuthorization();builder.Services.AddAuthorizationCore();builder.Services.AddCascadingAuthenticationState();

This had no effect.

I ensured the launchSettings.json Windows authentication is true and anonymous is false to match my other projects.

"iisSettings": {"windowsAuthentication": true,"anonymousAuthentication": false,"iisExpress": {"applicationUrl": "http://localhost:50496","sslPort": 44397  }

I tried wrapping the Routes.razor with the cascading authentication state.Which if my understanding of the documentation is correct. Shouldn't be necessary.

<Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState><Router AppAssembly="typeof(Program).Assembly"><Found Context="routeData"><RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" /><FocusOnNavigate RouteData="routeData" Selector="h1" /></Found></Router></Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState>

I then also tried wrapping the App.razor in the cascading authentication state. I tried this because this is where in my other functional apps the cascading authentication state is located.

<Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState><!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><base href="/" /><HeadOutlet @rendermode="@InteractiveServer" /></head><body class="k-body"><Routes @rendermode="@InteractiveServer" /><script src="_framework/blazor.web.js" autostart="false"></script><script>        document.addEventListener("DOMContentLoaded", function() {            Blazor.start();        });</script></body></html></Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState>

I expected that one of these changes would lead to user.Identity.IsAuthenticated to be true.But I am still unable to successfully configure my projects authentication state.

However I can retrieve the Name value if I use this method.var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;This variation works albeit only for Windows systems.


Viewing all articles
Browse latest Browse all 4050

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>