Вы используете cookie-parser?
Использование редиректов вместо куки
Всем привет, спасибо за все советы! Я застрял на подходе с куки, так как мой сервер находится на другом домене, а Safari ведёт себя враждебно по отношению к сторонним куки. Я написал вопрос и ответ на Stack Overflow с использованием подхода через редирект. Приятной аутентификации! ![]()
Хочу лишь сказать, что мне тоже было бы очень интересно получить простую интеграцию аутентификации Firebase в Discourse.
Хм, в чём именно цель этого действия? Вы не используете аутентификацию Firebase в другом месте веб-приложения, кроме Discourse? Я использую и не хочу трогать эту настройку; мне бы хотелось, чтобы она оставалась «локальной» (Authentication State Persistence | Firebase)
Несколько заметок для тех, кто пойдёт по этому пути:
- Назовите ваш куки-файл “__session”, если вы используете Firebase Hosting. Правила переписывания фильтруют все остальные куки для целей кэширования.
- Вы захотите заменить соответствующий код выше чем-то вроде этого, чтобы не допускать невалидированные электронные адреса (это серьёзный риск для безопасности).
auth
.verifyIdToken(idToken)
.then(function (decodedClaims) {
// В данном случае мы требуем, чтобы пользователь вошёл в систему в последние 5 минут
// и у него подтверждённый email
if (
decodedClaims.email_verified &&
new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
) {
return auth.createSessionCookie(idToken, { expiresIn });
}
throw new Error("UNAUTHORIZED REQUEST!");
})
- В Discourse есть настройка “перенаправление при выходе”. Скорее всего, вы захотите использовать её для обращения к URL, который очищает куки-файл __session (это можно сделать только через вызов API бэкенда), чтобы пользователь не автоматически входил в систему как тот же самый пользователь, когда попытается войти снова.
Где можно реализовать этот код?