Управление сеансами в Angular и ASP.NET

#angular #asp.net-core #authentication #session #middleware

Вопрос:

Поэтому я пытаюсь узнать, как использовать сеансы для хранения информации о зарегистрированных пользователях. Я использую .net core для своего бэкенда и Angular для своего интерфейса, и у меня есть 2 основных вопроса

1> Итак, когда я создаю переменную сеанса с помощью > HttpContext.Session.SetString("key", "value"); будет ли она автоматически сохранять идентификатор сеанса в браузере или это нужно сделать вручную? И как мне убедиться, что идентификатор сеанса поступает вместе с запросом ?

2> Как мне получить доступ к идентификатору сеанса из промежуточного программного обеспечения, чтобы использовать его для получения информации об этом конкретном пользователе? Например, если есть определенные страницы, к которым может получить доступ только администратор, и сеанс должен показать, что пользователь является администратором, как бы я реализовал это в промежуточном программном обеспечении?

Я попытался поискать в Google, но все, что пришло в голову, — это JWT, но я хотел бы использовать сеансы поверх него. Извините за вопросы нуба. Любая помощь будет признательна.

Ответ №1:

При использовании кода HttpContext.Session.SetString("key", "value"); сеанс будет создан и связан с браузером, вам не потребуется никаких других действий.

Вы можете получить доступ к сеансу через HttpContext, который будет введен в класс запуска и доступен через конструктор следующим образом public async Task InvokeAsync(HttpContext context)

И в классе запуска вы можете добавить следующий код services.AddHttpContextAccessor() , который поможет вам внедрить контекст HTTP в промежуточные программы.

Ответ №2:

используя следующий код, вы можете установить сеанс и локальное хранилище в angular

 localStorage.set("id",2);
sessionStorage.set("id",2);
 

используя следующий код, вы можете получить сеанс и локальное хранилище в angular

 localStorage.get("id")
sessionStorage.get("id");```
 

Комментарии:

1. как я получу доступ к этому сеансу из своего пользовательского промежуточного программного обеспечения?