2017-02-07 2 views
1

Я разрабатываю приложение Rails вместе с соответствующим API и рассматриваю введение Ember для некоторых особенно динамичных компонентов интерфейса. Я использую Devise для аутентификации и Doorkeeper для защиты конечных точек API и управления токенами OAuth.Используйте Devise Session для аутентификации Doorkeeper API для Rails/Ember-приложения

Я не хочу заменять элемент регистрации с помощью Ember, поэтому приложение Ember, скорее всего, будет инициализировано после входа пользователя на главную страницу входа в систему. Я бы хотел, чтобы приложение Ember использовало публичный API, а не предоставляло JSON из моих рельсово-ориентированных контроллеров, отчасти для простоты и отчасти для того, чтобы заставить API поддерживать актуальность.

Поскольку пользователь уже вошел в систему, я не думаю, что имеет смысл делать танец OAuth и получать токен. Вместо этого я бы хотел, чтобы API разрешал запросы от клиентов, которые вошли в систему с помощью Devise (наличие сеанса/файла cookie). Фактически, вы должны иметь возможность посетить /api/v1/resources.json в браузере после входа в приложение и получить ответ JSON. В настоящее время его 401 несанкционирован.

Это похоже на разумный подход? Если да, есть ли у кого-нибудь опыт?

ответ

0

Для тех, кто заинтересован в этом в будущем, ответ был довольно прост:

module Api 
    module V0 
    class ApiController < ActionController::Base 
     before_action :doorkeeper_authorize!, unless: :user_signed_in? 

    end 
    end 
end 

Ключевой частью является unless: :user_signed_in?, которая обеспечивается Devise

Смежные вопросы