저희는 커뮤니티 사이트로 Discourse를 사용하며, 공식 웹사이트도 있습니다.
따라서 사용자가 공식 웹사이트에 로그인한 후 Discourse에도 자동으로 로그인되기를 희망합니다.
공식 웹사이트에서는 사용자가 로그인할 때 쿠키를 추가하며, Discourse에서는 쿠키 공유를 사용합니다. Discourse는 쿠키에서 인증 정보를 가져와 사용자 정보를 확인한 뒤 로그인합니다.
구현 코드는 다음과 같습니다:
application_controller.rb
before_action :check_cookie_login
def check_cookie_login
if !current_user && cookies[:authorization]
external_id = get_external_id cookies[:authorization]
cookie_log_on_user external_id
end
end
current_user.rb
def cookie_log_on_user(external_id)
sso_record = SingleSignOnRecord.find_by(external_id: external_id)
user = sso_record.user
log_on_user(user)
end
default_current_user_provider.rb
def log_off_user(session, cookie_jar)
……
cookie_jar.delete('authorization')
end
이렇게 하는 데 문제가 있는지, 더 나은 방법이 있는지 궁금합니다.