Endpoint: LoginByPassword
Вход по логину и паролю: при успехе выписывается JWT для заголовка Authorization. Единственная ручка без токена. Поведение — LoginByPasswordHandler.
1. Транспорт
POST /api/Auth/LoginByPassword, JSON-тело (LoginByPasswordCommand ниже). Помечен
[AllowAnonymous] — единственный вход без токена (fallback-политика закрывает всё остальное).
При успехе Payload.Token — JWT; фронт кладёт его в localStorage и шлёт в
Authorization: Bearer. При неверных кредитах — 401 (ошибка в единой обёртке).
2. Endpoint
/// <summary>Endpoint входа по паролю.</summary>
public class LoginByPasswordEndpoint
{
public LoginByPasswordCommand? Input { get; set; }
public LoginByPasswordResult? Output { get; set; }
}
3. Command
/// <summary>Кредиты входа.</summary>
public class LoginByPasswordCommand : BasedCommand
{
/// <summary>Логин.</summary>
public string Login { get; init; } = "";
/// <summary>Пароль (на этапе разработки сверяется как открытый текст).</summary>
public string Password { get; init; } = "";
}
4. Result
/// <summary>Результат входа: токен в поле Payload; при ошибке Payload = null.</summary>
public class LoginByPasswordResult : BasedResult
{
public LoggedInPayload? Payload { get; init; }
}
5. Payload
/// <summary>Выданный токен сессии.</summary>
public class LoggedInPayload
{
/// <summary>JWT access-token (несёт jti, IcdUserId, IcdUserLogin).</summary>
public string Token { get; init; } = "";
}
Структурные связи
Использует
- Handler Handler: LoginByPassword
Используется
- Экран Вход
- Handler Handler: LoginByPassword