Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Blazor NotFound and NotAuthorized not working in .net 8

I’m facing an issue with .NET 8 and Blazor. The interactive render mode is set to Auto (Server and WebAssembly). The problem is when I add NotAuthorized and NotFound it fails to navigate to either my Login page or my NotFound page. Adding UseStatusCodePagesWithRedirects allows me to navigate to one of the pages, but I want unauthorized requests to redirect to the login page and requests for non-existing pages to redirect to NotFound.

If the page doesn’t exist, it will display the default browser error "page not found." If the page does exist and I’m not logged in, it will navigate to "account/login" instead of "/login," which is the path of my Login component.

Do you have any ideas on how to achieve this? I’ve searched the internet but couldn’t find a full solution to my problem.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

@using HTPB.Client.Pages
@using Microsoft.AspNetCore.Components.Authorization

<CascadingAuthenticationState>
    <Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }">
        <Found Context="routeData">
            <AuthorizeRouteView RouteData="@routeData" DefaultLayout="@typeof(Layout.MainLayout)">
                <NotAuthorized>
                    <Login></Login>
                </NotAuthorized>
            </AuthorizeRouteView>
        </Found>
        <NotFound>
            <NotFound></NotFound>
        </NotFound>
    </Router>
</CascadingAuthenticationState>

>Solution :

It sounds like you’re encountering some routing challenges with your Blazor application when handling unauthorized and not-found requests. Let’s try to tackle this step by step.
1.Handling Unauthorized Requests:
To redirect unauthorized requests to your login page ("/login"), you can use the AuthorizeView component in your Blazor layout or specific pages where authentication is required. Here’s a basic example:

<AuthorizeView>
    <Authorized>
        <!-- Content for authenticated users -->
    </Authorized>
    <NotAuthorized>
        <RedirectToLogin />
    </NotAuthorized>
</AuthorizeView>

Ensure that your login page component is properly set up at the "/login" route.
2.Handling Not Found Requests:
For handling not found requests and redirecting them to a custom NotFound page, you can utilize the NotFound component provided by Blazor Router. Here’s how you can set it up:
In your App.razor or layout component:

<Router AppAssembly="@typeof(Program).Assembly">
    <Found Context="routeData">
        <!-- Your existing routes -->
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    </Found>
    <NotFound>
        <RedirectToNotFound />
    </NotFound>
</Router>

Ensure that you have a component named RedirectToNotFound that performs the redirection logic to your custom NotFound page.

3.Dealing with Redirects:
It seems like you want to ensure that unauthorized requests are redirected to "/login" and not "/account/login". You can achieve this by configuring the authentication middleware in your Startup.cs file.

services.AddAuthentication(options =>
{
    options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
    options.LoginPath = "/login"; // Set the login path to "/login"
    options.AccessDeniedPath = "/access-denied"; // If needed, set the access denied path
});

This should ensure that unauthorized requests are redirected to "/login".
By following these steps and ensuring proper configuration, you should be able to handle unauthorized and not found requests effectively in your Blazor application. If you encounter any specific issues or have further questions, feel free to ask!

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading