Итак, вот мои попытки:
- Идентификатор сеанса не работает, поскольку каждый запрос получает совершенно новый идентификатор в том же браузере из-за WebSocket.
- Очевидно, что HttpContext.Connection.Id не работает, поскольку он меняется для каждой страницы обновления.
- builder.Services.AddSingleton не работает, поскольку он хранит данные на протяжении всего жизненного цикла приложения.
- Итак, как вы знаете, builder.Services.AddTransient и builder.Services.AddScoped также меняются для каждого отдельного запроса независимо от браузера или компьютера.
- Ну, я думаю, что HttpContext.Connection.Ip нельзя использовать, поскольку он использует тот же IP-адрес, что и компьютеры в одной локальной сети.
Как мне сохранить вход в систему по-своему, не используя аутентификацию The Blazor
Вот пример кода
///
/// https://learn.microsoft.com/en-us/aspne ... er-service
/// https://learn.microsoft.com/en-us/aspne ... teprovider
/// https://www.indie-dev.at/2020/04/06/cus ... rver-side/
/// https://learn.microsoft.com/en-us/aspne ... etcore-6.0
/// https://learn.microsoft.com/en-us/aspne ... sion-state
/// https://learn.microsoft.com/en-us/aspne ... sist-state
///
public class CustomAuthStateProvider : AuthenticationStateProvider
{
private IHttpContextAccessor context;
static ConcurrentDictionary logins = new ConcurrentDictionary();
public CustomAuthStateProvider(IHttpContextAccessor context)
{
this.context = context;
}
public override Task GetAuthenticationStateAsync()
{
if (logins.TryGetValue(context.HttpContext.Session.Id, out var p))
{
return Task.FromResult(new AuthenticationState(p)); //
Подробнее здесь: https://stackoverflow.com/questions/704 ... sh-clients
Мобильная версия