Session, Token 인증 삽질기

###api 서버 인증?

  • api 서버 처음 구축하므로 인증을 어떻게 해야 하나에 봉착
  • 웹은 session으로 템플릿과 컨트롤러가 물흐르듯이 넘어가면서 인증해결 했었음
  • 그렇다면 api 서버는 어떻게 하나??

###session 사용

  • 일단 session을 알고 있었기 때문에 사용하기로 함
  • session 자체에 대한 원리를 알게됨
  • 세션값 자체를 쿠키로 넘기는 지 알음
  • 그럼 모바일은 대체 어떻게 되는건가? 감이 오질 않았음

###HTTP header?

  • header에 쿠키값을 담으라했는데, django response 문제인지, 아이오닉 request 문제인지, 도통 알수가 없음
  • 쿠키로 세션값을 넘기는 시도를 굉장히 많이했지만, 도통 안됨

###jwt - Token 사용

  • 결국 token을 사용하기로 함
  • restframework - jwt를 사용함
  • user값으로 토큰을 생성한 후, response로 보냄
  • 아이오닉에서 localStrage에 토큰값 저장함
  • 아이오닉에서 request할 때마다 토큰값을 header에 저장해서 보냄
  • django에서 토큰을 체크해서, 처리함

###결론

  • 처음부터 Token을 썼으면 되는 것이였다.
  • 그러나 삽질하면서 많이 배우긴했다.
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)

```javascript .factory(‘AuthInterceptor’, function ($rootScope, $q, $window, $location) { return { request: function (config) { config.headers = config.headers || {}; if ($window.localStorage.token) { config.headers.Authorization = ‘Token ‘ + $window.localStorage.token; } return config; },

responseError: function (response) {
  if (response.status === 401) {
    $window.localStorage.removeItem('token');
    $window.localStorage.removeItem('username');
    $window.localStorage.removeItem('userid');
    $location.path('/');
    return;
  }
  return $q.reject(response);
}   }; })
Written on 2016 Jan, 20