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