Как использовать контейнер для печенья с сеансами RestSharp и ASP.NET?
-
27-10-2019 - |
Вопрос
Я хотел бы иметь возможность вызвать действие аутентификации на контроллере, и, если оно будет успешным, сохранить аутентифицированные данные пользователя в сеансе.
Тем не менее, я не уверен, как сохранить запросы внутри сеанса, так как я использую RestSharp в качестве отдельного клиента. Мне нужно каким -то образом получить ключ обратно от сервера при успешной авторизации, а затем для каждого будущего вызова проверьте ключ, который хранится в сеансе.
Как я могу гарантировать, что RestClient в RestSharp отправляет все будущие запросы с правильным набором cookie, так что переменная службы с сеансом можно было правильно извлечь?
Я смотрел на контейнер для печенья с httpfactory, но, похоже, нигде нет документации.
Решение 2
Я сделал это в конце концов. В основном создайте контейнер для печенья, затем добавьте сеанс cookie из ответа в контейнер для печенья. Все будущие запросы будут тогда содержать этот файл cookie.
var sessionCookie = response.Cookies.SingleOrDefault(x => x.Name == "ASP.NET_SessionId");
if (sessionCookie != null)
{
_cookieJar.Add(new Cookie(sessionCookie.Name, sessionCookie.Value, sessionCookie.Path, sessionCookie.Domain));
}
Другие советы
Если у кого -то есть подобная проблема, обратите внимание, что вышеперечисленное не требуется для простой «хранить мои куки после каждого запроса». Подход Jaffas выше работает, но вы можете просто прикрепить Cookiestore к своим RestClient и хранить печенье автоматически. Анкет Я знаю, что это не решение для всех, так как вы, возможно, захотите хранить преданный Только печенье. С другой стороны, это облегчает тестирование клиента отдыха! (Я использовал jaffas переменные для легкого):
CookieContainer _cookieJar = new CookieContainer();
var client = new RestClient("http://<test-server>/letteron"); //test URL
client.CookieContainer = _cookieJar;