로그인 유지할때 어떻게 하나요?


진행 중인 프로젝트에서 사용자의 로그인과 로그인 했을 때 로그인이 계속 유지되게 만들고 싶은데 어떻게 하면 되나요?

안드로이드 에서 아이디 비밀번호를 보낸후 php 에서 로그인을 확인 한 후에 세션아이디를 다시 안드로이드에 전달을 하는데 이때 안드로이드에서 이 세션 아이디를 꼭 쿠키라는 곳에 저장을 해야하는건가요?

쿠키에 저장을 하지 않고 그냥 static 변수에 저장한 다음에 다른 요청이 있을떄 이 값을 함께 전달해 주면 안되는지 그리고 이 세션 아이디라는 것은 꼭 해더에 포함을 해서 보내야 하는지 궁금합니다

  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 02월 15일에 작성됨

  • 어떤 환경을 의미하는지 설명이 필요합니다. 웹을 말하는건지 앱 환경을 말하는건지요?    정두식   2016.2.15 12:01     
조회수 1446


1 답변


좋아요
2
싫어요
채택취소하기

일반적인 로그인 유지 방법이 세션&쿠키 입니다.
필요하시다면 말씀하신 것처럼 변수에 할당해서 다른 요청에 같이 보내주어도 동작에는 문제가 없을 거에요.

다만 변수에 할당한다는 말은,
앱이 죽거나 메모리가 비워질 때 해당 변수의 값이 초기화되어 로그인이 유지되지 않을 수 있으니 파일에 따로 저장해두는 등의 처리가 추가적으로 필요할 겁니다.

서버사이드는 php 를 사용하신다면 아마도 CI 나 Laravel 등의 특정 프레임워크를 사용하고 있을 가능성이 높습니다.
(질문 내용으로 추측하기에는 서버사이드는 직접 개발하지 않으실거란 생각이 들었습니다.)

처음에 일반적인 로그인 유지 방법이 세션&쿠키라 말씀드렸는데 이러한 프레임워크들 대부분인 거기에 맞춰 로그인 기능이 이미 구현되어 있습니다.

예를 들어 라우트에 로그인(예를 들어 "auth") 필터를 할당하여 로그인이 필요하도록 설정 가능할텐데 기본적인 로그인 유지 기술들을 이용한다면 특별히 설정할 것이 많지 않을 것입니다.

이를 말씀하신대로 변수를 통해 저장하고 특정 파라미터로 요청시 보낸다거나 하면 기본 rule 이 아니기 때문에 필터를 재작성하거나 많은 수정이 불가피합니다.

틀린 말은 아니지만 보다 수월하게 작업하기 위해서 일반적인 기술을 채택하는 것이 더 좋아보입니다.


제가 주로 사용하는 Laravel 을 이용한 로그인 플로우를 설명드리겠습니다.

Users table 에 password 와 remember token 이라는 항목을 만들도록 프레임워크에서 권장하는데요.
앱에서 로그인을 하면 remember token 을 생성하고,
이를 캐시 (메모리, 레디스, 파일캐시, DB 등등) 하게 됩니다.
그리고 로그인 액션에 대한 응답으로 이를 Set-Cookie 헤더로 내려주게 됩니다.
클라이언트 쪽에서 쿠키를 구워라 하는 명령이죠.
그러면 클라이언트는 이를 쿠키로 만들면 됩니다.
이후의 액션은 일반적인 브라우저와 마찬가지로 remember token 쿠키를 함께 전송해주면 됩니다.
아마도 안드로이드의 일반적인 Request 객체가 기본적으로 하는 동작일거라 생각됩니다.

다만 이렇게 했을 때 단말기를 껐다가 켜면 안드로이드 단말에 따라 쿠키가 날아가는 경우가 있을텐데,
이를 위해 storage 에 해당 값을 저장해 두었다가 필요하면 꺼내서 쿠키화하는 등의 후속 처리 몇 가지가 필요하게 됩니다.

도움이 되면 좋겠네요.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close