Реагировать не передавая заголовок авторизации в rails api - PullRequest
1 голос
/ 06 мая 2019

Я использую интерфейс React с API-интерфейсом raq graphql для SaaS-проекта с квартирой.Мне нужно получить токен авторизации из request.env, чтобы я мог декодировать user_id, чтобы получить имя арендатора, которое является полем в модели User.Это для общего лифта, основанного на пользователе, вошедшем в систему. Когда я проверяю журнал регистратора Rails, я вижу, что "HTTP_AUTHORIZATION" => "" это пусто.что я пошел не так

Это из index.js, где добавлена ​​авторизация:

    const authLink = setContext((_, { headers }) => {
      const token = localStorage.getItem(AUTH_TOKEN)
      return {
        headers: {
          ...headers,
          authorization: token ? `Bearer ${token}` : ''
        }
      }
    })

    const client = new ApolloClient({
      link: authLink.concat(httpLink),
      cache: new InMemoryCache()
    })

    ReactDOM.render(
      <BrowserRouter>
        <ApolloProvider client={client}>
          <App />
        </ApolloProvider>
      </BrowserRouter>, 
      document.getElementById('root')
    );

И здесь я пытаюсь извлечь его в Rails:

Rails.application.config.middleware.use Apartment::Elevators::Generic, lambda { |request|
  tenant_name = nil 


  if request.env["HTTP_AUTHORIZATION"]

    token = request.env["HTTP_AUTHORIZATION"]
    payload = JWT.decode token, Rails.application.secrets.secret_key_base, 'HS256'
    user_id = payload.first["user_id"]    
    tenant_name = User.find(user_id).subdomain
  end

  tenant_name
}
...