Код: Выделить всё
@code {
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
private IComponentRenderMode? RenderModeForPage => HttpContext.Request.Path.StartsWithSegments("/Account") ? null : InteractiveServer;
}
Код: Выделить всё
@page "/Account/Login"
@inject SignInManager SignInManager
@inject ILogger Logger
@inject NavigationManager NavigationManager
Se connecter
Se connecter
@if (errorMessage != null)
{
@errorMessage
}
@if (InProgress)
{
}
else
{
Se connecter
}
@code {
private string? errorMessage = null;
private bool InProgress = false;
[CascadingParameter]
private HttpContext HttpContext { get; set; } = default!;
private InputModel Input { get; set; } = new();
protected override async Task OnInitializedAsync()
{
if (HttpMethods.IsGet(HttpContext.Request.Method))
{
// Clear the existing external cookie to ensure a clean login process
await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
}
}
public async Task LogInUser()
{
InProgress = true;
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, set lockoutOnFailure: true
var result = await SignInManager.PasswordSignInAsync(Input.Email, Input.Password, true, lockoutOnFailure: true);
if (result.Succeeded)
{
Logger.LogInformation("L'utilisateur est connecté.");
NavigationManager.NavigateTo("/Home");
}
else if (result.IsLockedOut)
{
Logger.LogWarning("Le compte a été bloqué.");
errorMessage = "Le compte a été bloqué.";
}
else
{
errorMessage = "Erreur: tentative de connexion invalide.";
}
InProgress = false;
}
private sealed class InputModel
{
[Required(ErrorMessage = "Le courriel ne doit pas être vide.")]
[EmailAddress(ErrorMessage = "Ceci n'est pas une adresse courriel valide.")]
public string Email { get; set; } = "";
[Required(ErrorMessage = "Le mot de passe ne doit pas être vide.")]
[DataType(DataType.Password)]
public string Password { get; set; } = "";
}
}
Так может быть, есть режим рендеринга, о котором я не знаю, или что-то, что я пропустил?
Подробнее здесь: https://stackoverflow.com/questions/784 ... login-page
Мобильная версия