GFlisch / Arc4u.Guidance.Doc

Other
5 stars 1 forks source link

Blazor authentication failure in DEV/TEST/... if the url contains no trailing slash #210

Closed bitsdontbite closed 5 months ago

bitsdontbite commented 9 months ago

Describe the bug When deployed in DEV with IIS (with virtual path), the authentication mechanism in blazor fails without adding a trailing slash to the url. For instance: https://dev.tmd.belgrid.net/ui causes an authentication failure but: https://dev.tmd.belgrid.net/ui/ succeeds.

Most users will never add this trailing slash. It can be managed seamlessly by updating the code in RedirectToLogin.razor: Just replace: Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(Navigation.Uri)}");

with something like:

var uri = Navigation.Uri;

if (!uri.EndsWith("/")) uri += "/";

Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(uri)}");

Expected behavior Whether the user adds the trailing slash or not should work.

Desktop:

rdarko commented 9 months ago

RedirectToLogin.razor:

@inject NavigationManager Navigation

@code { protected override void OnInitialized() { var uri = Navigation.Uri;

    if (!uri.EndsWith("/"))
        uri += "/";

    Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(uri)}");
}

}

bitsdontbite commented 9 months ago

That's it!

GFlisch commented 8 months ago

Fix with this code: var uri = Navigation.Uri.Trim() + "/"; uri = uri.Replace("//", "/");

    Navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(uri)}");
vvdb-architecture commented 7 months ago

Confirmed fixed in ACC