.net core 2.1 при перенаправлении из другого места значение cookie всегда равно нулю - PullRequest
0 голосов
/ 10 декабря 2018

Я использую механизм пользовательской авторизации, где я сохраняю текущий сеанс пользователя в файле cookie.Каждый раз, когда кто-то посещает веб-сайт, ActionFilter указывает, где он выполняет какие-либо действия для проверки значения cookie и состояния сеанса.

Проблема, с которой я столкнулся, - я должен POST некоторые данные на другом веб-сайте (https://differentUrl.com), где я передаю свои веб-сайты returnUrl (https://mywebsiteUrl.com). Другой веб-сайт после завершения работы отправляет обратно POST ответ на мой returnURL. После этого файл cookie, который я пробуючтобы получить, всегда null.

Создание куки, как это (это происходит при входе в систему):

private readonly IHttpContextAccessor _contextAccessor; //Injected via DI
...
var cookieOptions = new CookieOptions()
{
    Expires = DateTime.Now.AddDays(10),
    Secure = true,
    HttpOnly = false,
    SameSite = SameSiteMode.None //Still sets as Lax in browser
};

this._contextAccessor.HttpContext.Response.Cookies.Append("SomeKey", "myEncryptedCookieValue", cookieOptions);

Получение куки после перенаправления:

var cookieDataString = this._contextAccessor.HttpContext.Request.Cookies["SomeKey"];

cookieDataString всегда null.

Он отлично работает, когда я нахожусь на том же сайте, но когда меня перенаправляют обратно с другого сайта, всегда null

Обновление 1:

После некоторых исследований я обнаружил, что эта проблема может привести к политике SameSite. Найдена эта статья Использование того же атрибута cookie сайта , который говорит, что lax это не то, что вы хотитеиспользуйте, когда вы получите POST метод на ваш сайт.Создание cookie Я установил параметры cookie как SameSiteMode.None.Поскольку это не сработало, я обнаружил, что вы должны установить MinimumSameSitePolicy в промежуточном программном обеспечении для запуска.

app.UseCookiePolicy(
    new CookiePolicyOptions()
    {
        MinimumSameSitePolicy = SameSiteMode.None
    });

После удаления старого куки и создания нового он все равно создает его с политикой lax.

1 Ответ

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

После некоторого исследования и игры с различными тестовыми примерами я обнаружил, что это действительно SameSite политика, которая работает как надо.Основная проблема заключалась в том, что он не позволял мне устанавливать SameSite = SameSiteMode.None, даже после того, как я добавил MinimumSitePolicy.

. Через некоторое время, просматривая документацию, я обнаружил Общее положение о защите данных (GDPR).net core 2.2

Все, что мне нужно было сделать, это добавить эти строки в ConfigureServices():

services.Configure<CookiePolicyOptions>(options =>
{
    options.MinimumSameSitePolicy = SameSiteMode.None;
});

и добавить app.UseCookiePolicy(); в Configure().

После этих исправлений я, наконец, удалил Lax из файла cookie, а после перенаправления наконец получил значение из своего файла cookie.

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