Blazor Server .Net 8 Аутентификация файлов cookie без идентификации ⇐ C#

Место общения программистов C#
Anonymous
Blazor Server .Net 8 Аутентификация файлов cookie без идентификации

Сообщение Anonymous »

Я пытался выполнить пользовательскую аутентификацию с помощью Blazor Server в .Net 8, но до сих пор это не удалось. Я новичок в этой платформе Blazor, и, пожалуйста, проверьте мой рабочий процесс, почему я продолжаю получать ошибку. Я прочитал часть статьи, но дела в Blazor развиваются очень быстро, и я испробовал множество методов, но все равно безуспешно.
Мое дерево страниц:
Изображение

Код: Выделить всё

Program.cs

Код: Выделить всё

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(x =>
{
x.LoginPath = "/login";
});
builder.Services.AddAuthorization();
builder.Services.AddCascadingAuthenticationState();

///////////////////////////

app.UseAuthentication();
app.UseAuthorization();

Код: Выделить всё

Login.razor

Код: Выделить всё

@using Microsoft.AspNetCore.Authentication
@using Microsoft.AspNetCore.Authentication.Cookies
@using System.Security.Claims

@* some razor component *@

@code{
[CascadingParameter]
public HttpContext httpcontext { get; set; } = default!;

public async Task ClickLogin()
{
_loginbtnLoading = true;
if (!string.IsNullOrEmpty(_ntid) && !string.IsNullOrEmpty(_password))
{
await Task.Delay(2000);
//I'm using LDAP for checking user signin
var loginOK = ILoginServices.CheckLoginStatus(_ntid, _password);
if (loginOK.success)
{

var claims = new List();
claims.Add(new Claim(ClaimTypes.Name, _ntid)); // add more claims

var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

var principal = new ClaimsPrincipal(claimsIdentity);

// Sign in the user
await httpcontext.SignInAsync(principal);

NavManager.NavigateTo("/home");
}
else
{
Snackbar.Add(loginOK.errorMessage, Severity.Error);
}
}
else
{
Snackbar.Add("Please key in all the required info", Severity.Error);
}
_loginbtnLoading = false;
}

}
Возникла ошибка

Код: Выделить всё

System.InvalidOperationException: Headers are read-only, response has already started.


Подробнее здесь: https://stackoverflow.com/questions/781 ... t-identity

Вернуться в «C#»