Expressjs cook ie - настройки сеанса не работают с Passportjs - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь вызвать свою конечную точку / auth / user, чтобы узнать текущего пользователя, который вошел на мой веб-сайт. Но из-за нового обновления Chrome мне нужно как-то установить sameSite и secure. Кто-нибудь знает, как я могу это обойти? Я что-то делаю не так с cook ie -session?

Cook ie отправляется express нормально, но у него нет настроек того же сайта и безопасности, которые я указываю в cook ie -сессионные настройки (см. Изображение). Я тоже пробовал с express -session, но по какой-то причине одни и те же настройки сайта и безопасности никогда не способствуют приготовлению ie, используемого для oauth.

Кстати, проверка подлинности работает на адресах localhost, но когда я развертываю из интерфейса и бэкэнда с помощью heroku, я столкнулся с проблемой, когда мне нужно установить sameSite. Может ли настройка прокси-сервера или чего-то еще решить ту же проблему с сайтом?

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 28 августа 2020

Через 3 дня пытаюсь разобраться. Я наконец нашел способ обойти эту проблему, Это не исправление , я совершенно уверен, что в Passport JS в конечном итоге появится решение для этого, но на данный момент он позволил мне получить пользователя из аутентификация.

Так как мы не можем получить пользователя от повара ie, но информация находится в сеансе сервера, способ получить эту информацию - добавить к серверу ' . js 'путь для получения пользователя непосредственно из сеанса сервера:

app.get('/api/getUser', (req, res) => {
  res.json(req.session.user);
});

По какой-то причине я предполагаю отсутствие ie как-то, используя req.session внутри маршрутизатора возвращает undefined, но если используется внутри 'server. js' (или индексного файла вашего сервера), он получает сеанс.

Если вам нужен req.user._id или другая конфиденциальная информация для других запросов я бы рекомендовал вернуть jwtToken с этой информацией во внешний интерфейс (в разрешении json), затем сохранить токен непосредственно в localStorage и передать токен в теле ваших запросов, это не идеальный вариант, но это более безопасный способ сохранить идентификаторы в безопасности.

Надеюсь, это поможет вам!

0 голосов
/ 18 августа 2020

Я работаю над той же проблемой. SameSite = None требует, чтобы повар ie был в безопасности

https://www.chromestatus.com/feature/5633521622188032

Несмотря на то, что я установил "secure: true", я все еще вижу повара ie не создается на Chrome, но я вижу это на Edge

...