es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Administrador de navegación de Blazor / Autenticación

Estoy utilizando la Autenticación de Blazor y he creado la Página de Inicio de Sesión. Quiero redirigir en la página de Layout cuando el usuario no está autenticado, pero desafortunadamente no funciona.

Aquí está mi código:

[Inject] private NavigationManager nav { get; set; } protected override async Task OnInitializedAsync() { var authState = await auth.GetAuthenticationStateAsync(); var user = authState.User; if (!user.Identity.IsAuthenticated) { nav.NavigateTo(“/Identity/Account/Login”); } }

Lo que en realidad está sucediendo es que Blazor piensa que la página no existe y renderiza el mensaje de NotFound: “Lo siento, no hay nada en esta dirección”.

Dicho esto, sin hacer nada más, al actualizar la página en realidad abre la página de inicio de sesión. Esto no tiene sentido para mí.

¿Podría alguien ayudarme a entender lo que está sucediendo aquí?

Atentamente,

Chris

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Estimado Chris,

    Parece que tu código de redireccionamiento en la página de diseño cuando el usuario no está autenticado es correcto. Sin embargo, Blazor no reconoce la página de inicio de sesión cuando se genera.

    Puedes solucionar este problema agregando explícitamente la ruta de la página de inicio de sesión en el archivo App.razor. Por favor, agrega la siguiente línea en la parte superior del Router.

    <routeview routedata="@routeData" defaultlayout="@typeof(MainLayout)"></routeview>

    <authorizerouteview routedata="@routeData" defaultlayout="@typeof(MainLayout)"></authorizerouteview>

    <routeview routedata="@routeData" defaultlayout="@typeof(MainLayout)">
    <notfound>
    Lo siento, no hay nada en esta dirección.
    </notfound>
    </routeview>

    El código anterior le indicará explícitamente a Blazor la ruta a la página de inicio de sesión y evitará el error “No encontrado”.

    Espero que esto ayude.

    Atentamente,
    Experto en TI

Comments are closed.