how to use SignInManager.SignInAsync in blazor web app?
.net8, using blazor webapp, created form using mudBlazor:
but it throws exception: System.InvalidOperationException: 'OnStarting cannot be set because the response has already started.'
how can i do this? i'm using cookie authentication
<EditForm Model="@_model" OnValidSubmit="OnValidSubmit">
<DataAnnotationsValidator />
<ForumAlert AlertModel="_alert" />
<MudCardContent>
<MudTextField Label="First name" HelperText="Max. 8 characters"
@bind-Value="_model.UserName" For="@(() => _model.UserName)" />
<MudTextField Label="Password" HelperText="Choose a strong password" Class="mt-3"
@bind-Value="_model.Password" For="@(() => _model.Password)" InputType="InputType.Password" />
</MudCardContent>
<MudCardActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary" Class="ml-auto">Zaloguj się</MudButton>
</MudCardActions>
</EditForm>
@code{
private async Task OnValidSubmit(EditContext context)
{
var model = (LoginFormModel)context.Model;
var user = await _userManager.FindByNameAsync(model.UserName);
if (user != null)
{
//var principal = new ClaimsPrincipal(new ClaimsIdentity(null, "Basic"));
//await _httpContextAccessor.HttpContext.SignInAsync(principal);
await _signInManager.SignInAsync(user, true);
_navigationManager.NavigateTo("/");
}
else
{
_alert.Warning("User not found");
}
}
}
<EditForm Model="@_model" OnValidSubmit="OnValidSubmit">
<DataAnnotationsValidator />
<ForumAlert AlertModel="_alert" />
<MudCardContent>
<MudTextField Label="First name" HelperText="Max. 8 characters"
@bind-Value="_model.UserName" For="@(() => _model.UserName)" />
<MudTextField Label="Password" HelperText="Choose a strong password" Class="mt-3"
@bind-Value="_model.Password" For="@(() => _model.Password)" InputType="InputType.Password" />
</MudCardContent>
<MudCardActions>
<MudButton ButtonType="ButtonType.Submit" Variant="Variant.Filled" Color="Color.Primary" Class="ml-auto">Zaloguj się</MudButton>
</MudCardActions>
</EditForm>
@code{
private async Task OnValidSubmit(EditContext context)
{
var model = (LoginFormModel)context.Model;
var user = await _userManager.FindByNameAsync(model.UserName);
if (user != null)
{
//var principal = new ClaimsPrincipal(new ClaimsIdentity(null, "Basic"));
//await _httpContextAccessor.HttpContext.SignInAsync(principal);
await _signInManager.SignInAsync(user, true);
_navigationManager.NavigateTo("/");
}
else
{
_alert.Warning("User not found");
}
}
}
2 Replies
help?
oh god cookie auth
anyways what even is OnStarting?