Сервер Blazor: уникальный идентификатор для различения клиентовC#

Место общения программистов C#
Ответить
Anonymous
 Сервер Blazor: уникальный идентификатор для различения клиентов

Сообщение Anonymous »

Хорошо, я пытаюсь определить источник запросов в Custom AuthenticationStateProvider
Итак, вот мои попытки:
  • Идентификатор сеанса не работает, поскольку каждый запрос получает совершенно новый идентификатор в том же браузере из-за 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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