REST API를 이용할 때 안드로이드에서 로그인 및 로그인 유지 구현방법에 대해
조회수 8335회
안녕하세요.
저는 프로그래밍 매우 초보입니다.
제가 장고(장고와 django-rest-auth)를 통해 REST api를 짜봤는데 여기서 로그인을 어떻게 구현해야하는건지 감이 도통 안 잡혀서 여기에 질문올립니다.
제가 만든 api 는 json 타입으로
{
"username": "",
"email": "",
"password1": "",
"password2": ""
}
를 post 방식으로 보낸 후에
HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept
{
"key": "99defb355414133f00ad88e15771e3a8b43e71f"
}
이런식으로 json 타입으로 키값을 받습니다. 이 키값을 왜 주는지도 모르겠어요.
이 키값을 준다는 것은 basic authentication 임을 의미하는건가요?
"description": "Check the credentials and return the REST Token\nif the credentials are valid and authenticated.\nCalls Django Auth login method to register User ID\nin Django session framework\n\nAccept the following POST parameters: username, password\nReturn the REST Framework Token Object's key.",
이렇게 설명이 나와있긴한데 이것만으론 제가 뭘 공부해야하는지도 모르겠어서 여쭙습니다.
초보라 어느부분을 공부해야할지, 어떻게 구현하는 걸 생각해야할지도 모르겠습니다.
알려주시면 감사하겠습니다.
retrofit가 좋다길래 그걸 여기에 적용해보고싶은데 대체 어떻게 해야하는지 모르겠습니다.
로그인도, 로그인유지도 잘 모르겠어서 조금이나마 힌트라도 주시면 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
로그인 후 서버에서 내려주는 토큰(임의의 문자열)
"key": "99defb355414133f00ad88e15771e3a8b43e71f"
은 API를 요청할 때 필요합니다.흐름을 간단하게 설명하면
- 안드로이드 앱에서 아이디와 비밀번호로 로그인 API 호출
- 서버에서는 토큰을 발급하고 세션에 저장
- 2) 에서 발급 받은 토큰을 안드로이드 앱에서는 서버 API 호출 시 HTTP 헤더
"Authorization": "99defb355414133f00ad88e15771e3a8b43e71f"
에 추가해서 요청 - 서버에서는 2)에서 발급한 토큰과 3)의 토큰을 비교해 일치하는 경우에만 작업을 수행하고 일치하지 않으면 예외를 발생
로그인 유지 방법에 대해서 물어보셨는데 서버에서 발급한 토큰이 유효하다면 로그인이 유지되고 있다고 이해할 수 있습니다. 만일 오랫동안 앱을 사용하지 않다가 앱을 다시 실행시켰을 때 다시 로그인 시키고 싶다면 서버에서 해당 토큰을 만료시키고, 약속된 에러 코드를 클라이언트에게 내려준 후 클라이언트에서 로그인 화면을 띄우는 식으로 구현하면 됩니다. (서버 구현에 따라 토큰을 만료 시키지 않고 로그인을 계속 유지하는 방식도 사용할 수 있습니다.)
Retrofit은 쉽게 배울 수 있는 예제가 다양하게 존재합니다. 코드를 따라서 구현해보시면 충분히 매력을 느낄 수 있을 것이라 생각되고요. 아래 글들을 참고해보세요.
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력