devise-token-auth로 access-token을 response로 얻을 수 없다

이번에 발생한 문제



페이지내에서 request.headers 에 액세스해도 인증에 필요한 access-token 이나 client 가 보이지 않는다. (api를 postman으로 두드리면 볼 수 있는데...)

아래는 postman에 표시된 응답 헤더


원인



API와 클라이언트가 다른 도메인에 있는 경우 RailsAPI에 cross origin request를 허용해야 하고 expose에 대한 설명이 누락되었습니다.

참고로 한 사이트



devise-token-auth 공식 문서
내용은 동일하지만 이것을 번역하는 사이트
devise-token-auth 공식 문서 (일본어)

수정한 곳



파일의 위치는 프로젝트에 따라 다르지만 CORS에 대해 작성된 config 파일을 다시 작성했습니다. 이번에는 다음 파일을 수정한다.

/back/config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins 'localhost:8080'

    resource '*',
      headers: :any,
      expose: ['access-token', 'uid', 'client'], #この行を新たに追加
      methods: [:get, :post, :put, :patch, :delete, :options, :head]
  end
end

마지막으로



이 문제를 해결함에 있어서, 다양한 기사를 오갔지만, 최종적으로는 공식 문서로 가볍게 해결해 버렸다.

좋은 웹페이지 즐겨찾기