feat(auth): synchronize SSR cookie authentication with WASM client and support returnUrl navigation

This commit is contained in:
2026-05-27 11:19:48 +02:00
parent ee87014fee
commit ae25d14ee7
4 changed files with 85 additions and 2 deletions
@@ -102,13 +102,21 @@
<input type="hidden" name="email" value="@_loginModel.Email" />
<input type="hidden" name="password" value="@_loginModel.Password" />
<input type="hidden" name="rememberMe" value="@(_loginModel.RememberMe ? "true" : "false")" />
<input type="hidden" name="returnUrl" value="@ReturnUrl" />
</form>
@code {
[CascadingParameter]
private Task<AuthenticationState>? AuthStateTask { get; set; }
[Parameter]
[SupplyParameterFromQuery(Name = "error")]
public string? ErrorCode { get; set; }
[Parameter]
[SupplyParameterFromQuery(Name = "returnUrl")]
public string? ReturnUrl { get; set; }
private LoginModel _loginModel = new();
private string? _errorMessage;
private bool _isSubmitting;
@@ -116,7 +124,7 @@
private bool _allowRegistration;
private bool _allowPasswordReset;
protected override void OnInitialized()
protected override async Task OnInitializedAsync()
{
_allowRegistration = Configuration.GetValue<bool?>("Features:AllowRegistration") ?? true;
_allowPasswordReset = Configuration.GetValue<bool?>("Features:AllowPasswordReset") ?? true;
@@ -134,6 +142,15 @@
_ => "Wystąpił nieoczekiwany błąd podczas logowania."
};
}
if (AuthStateTask != null)
{
var authState = await AuthStateTask;
if (authState.User.Identity?.IsAuthenticated == true)
{
NavigationManager.NavigateTo(string.IsNullOrEmpty(ReturnUrl) ? "/" : ReturnUrl);
}
}
}
private async Task HandleLogin()