Hotwire Native 앱에서 인증을 간소화하는 핵심 전략은 다음과 같습니다.
1. 장기 지속 쿠키를 통한 플랫폼 간 인증
cookies.signed.permanent[:session_id] = session.id를 사용하여 모든 플랫폼에서 사용자의 세션을 유지하는 장기 지속 쿠키를 활용합니다. 이는 웹과 네이티브 앱 모두에서 동일한 인증 상태를 공유하는 기반이 됩니다.
2. 메타 태그를 통한 인증 상태 노출
- 모든 페이지에 사용자의 인증 상태를 나타내는
<meta>태그를 렌더링합니다. ```html```
authenticated?헬퍼 메서드를 통해 현재 사용자의 로그인 여부를 불리언 값으로 전달합니다.
3. Bridge 컴포넌트를 통한 네이티브 연동
- 위
<meta>태그와 연동되는BridgeComponent를 구현합니다. 이 컴포넌트는authentication이라는 이름으로 작동하며,signIn또는signOut이벤트 메시지를 수신합니다.swift class AuthenticationComponent: BridgeComponent { override class var name: String { "authentication" } override func onReceive(message: Message) { if message.event == "signIn" { signIn() } else if message.event == "signOut" { signOut() } } }이 컴포넌트는 웹에서 발생한 인증 관련 이벤트를 네이티브 앱으로 전달하는 역할을 합니다.
4. 인증 상태에 따른 탭 바 제어
- 사용자가 로그인하거나 로그아웃할 때 네이티브 탭 바의 가시성과 내용을 동적으로 전환합니다.
swift func signIn() { tabBarController.tabBar.isHidden = true // 로그인 전 탭 바 숨김 tabBarController.load(tabs) // 로그인 후 탭 로드 및 탭 바 표시 } func signOut() { tabBarController.tabBar.isHidden = false // 로그아웃 후 탭 바 표시 tabBarController.load([newSessionTab]) // 로그인 페이지 탭 로드 }초기 앱 실행 시 로그인 화면이 먼저 표시되도록 탭 바를 숨기고, 로그인 성공 시 실제 앱 콘텐츠 탭을 로드하여 탭 바를 보이게 합니다. 로그아웃 시에는 다시 로그인 화면으로 돌아가도록 합니다.