Как сохранить данные из логина в сессию в REST WEB API - PullRequest
0 голосов
/ 07 декабря 2018

Я пытался сохранить данные для входа в сеанс, но я получаю сообщение об ошибке, что сеанс null, и я не могу получить к нему доступ.

public void saveToSession(UserModel userInfo) {
    string id = userInfo.Id.ToString();
    HttpContext context = HttpContext.Current;
    context.Session["Id"] = id;
    context.Session["FirstName"] = userInfo.FirstName;
    context.Session["LastNAme"] = userInfo.LastName;
    context.Session["Username"] = userInfo.Username;
    context.Session["Email"] = userInfo.Email;
    context.Session["Role"] = userInfo.Role;
}

Нужно ли выполнять какие-либо другие настройки?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

REST обычно требует, чтобы все, что вам нужно для выполнения действия, было включено в запрос, поэтому сеанс не включен.Его включение (IMHO) немного грязное.

Включение состояния сеанса в веб-API

Это работает для ASP.NET Web API 5.x.Если вы на самом деле используете ASP.NET Core, он не будет работать (и, пожалуйста, обновите ваши теги).

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

Наконец, я назвал это «грязным», потому что оно основано на рефлексии при назначении частного поля в классе платформы.Если реализация изменится, она, скорее всего, просто перестанет работать: либо поле исчезнет, ​​либо вызов GetField вернет null, а следующая проверка прекратится, либо поле останется, но оно больше не будет использоваться.Менее вероятное, но все же возможное изменение состоит в том, что тип поля изменяется на что-то несовместимое, и тогда вы получаете исключения при запуске.

0 голосов
/ 07 декабря 2018

Необходимо выполнить некоторые настройки запуска

В ConfigureServices

services.Configure<CookiePolicyOptions>(options => {
    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
    options.CheckConsentNeeded = context => false;
    options.MinimumSameSitePolicy = SameSiteMode.None;
})

И в In Application Builder

app.UseSession();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...