Devise에서 SNS 로그인 세션 유지 안될때

SNS 로그인 세션 유지

  • 일반적으로 sns로그인을 구현할 때, omniauth_callback_controller 사용해서 로그인을 합니다. 웹앱으로 패키징할 경우, 따로 쿠키를 관리해줘야 하기 때문에 아래처럼 로그인시 유저 세션 정보를 저장해줘야 합니다.
#omniauth controller 코드 일부
cookies[:login] = true
@user.remember_me = true
#혹은 
cookies[:login] = true
@user.remember_me!
  • application controller에 sign_in_remember 메서드를 생성해서 아래와 같이 작성해줬습니다.
#application controller

private

def sign_in_remember(user=nil)
  @user = user
  sign_out user
  @user.remember_me = true
  sign_in @user, event: :authentication
end

위 메서드를 sns로그인 함수에 적용해주면 sns 로그인을 해도 세션이 끊기지 않도록 설정할 수 있습니다.

#omniauth controller 코드 일부

sign_in_remember(user)

위 글은 구글 그룹 글을 참고해서 만들었습니다: https://groups.google.com/g/plataformatec-devise/c/fGHzF1imqJ0?pli=1

좋은 웹페이지 즐겨찾기