cookie-parser를 사용하고 계신가요?
쿠키 대신 리디렉션 사용
여러분, 조언해 주셔서 감사합니다. 서버가 다른 도메인에 있고 Safari가 서드파티 쿠키와 전쟁을 벌이고 있어서 쿠키 방식에 막혀 있었습니다. 리디렉션 방식을 사용한 Stack Overflow Q&A를 작성해 두었으니, 이제 인증이 잘 작동합니다! ![]()
firebase 인증을 discourse에 쉽게 통합할 수 있으면 좋겠다는 점도 말씀드리고 싶습니다.
음, 이 작업을 수행하는 정확한 목적은 무엇인가요? 디스코urs 외에 웹앱의 다른 곳에서 Firebase 인증을 사용하지 않는 건가요? 저는 사용하고 있으며, 해당 설정을 건드리고 싶지 않습니다. “local”(Authentication State Persistence | Firebase)으로 유지하는 것이 더 좋습니다.
이 경로를 따르는 다른 분들을 위한 몇 가지 참고 사항:
- Firebase Hosting을 사용하는 경우 쿠키 이름을 "__session"으로 지정하세요. 리라이팅 규칙은 캐싱 목적으로 다른 모든 쿠키를 필터링합니다.
- 검증되지 않은 이메일을 허용하지 않도록 하기 위해(이는 큰 보안 위험입니다) 위의 관련 코드를 다음과 같은 내용으로 교체해야 합니다.
auth
.verifyIdToken(idToken)
.then(function (decodedClaims) {
// 이 경우, 사용자가 지난 5분 이내에 로그인했으며
// 검증된 이메일을 가지고 있는지 강제 적용합니다.
if (
decodedClaims.email_verified &&
new Date().getTime() / 1000 - decodedClaims.auth_time < 5 * 60
) {
return auth.createSessionCookie(idToken, { expiresIn });
}
throw new Error("UNAUTHORIZED REQUEST!");
})
- Discourse에는 “로그아웃 리다이렉트” 설정이 있습니다. 이 설정을 사용하여 __session 쿠키를 삭제하는 URL을 호출하는 것이 좋습니다(백엔드 API 호출을 통해서만 가능). 이렇게 해야 사용자가 다시 로그인할 때 이전과 동일한 사용자로 자동으로 로그인되지 않습니다.
이 코드를 어디에 구현할 수 있나요?