2015-01-27 3 views
1

Я создал приложение Rails 4, используя рельсы-api gem. У меня есть контроллер приложений, который наследуется от ActionController :: API.API Devise JSON аутентификация/регистрации/сеансы

Мои маршруты файл:

namespace :api do 
    namespace :v1 do 
     devise_for :users 
     resources :friends 
    end 
end 

У меня есть модель пользователя, который я выбежала миграцию, чтобы добавить атрибуты изобрести. Модель пользователя также имеет атрибуты, которые не являются специфичными для разработки, такие как first_name и last_name.

У меня тогда есть модель token_authentication, в которой хранится токен пользователей.

Я бы хотел использовать текущую версию Deivse для регистрации/сеансов/аутентификации пользователей в моем приложении.

Мой вопрос: Как я могу использовать контроллеры регистрации/контроллеры сессии, чтобы принять формат JSON, создать пользователя/сеанс и отправить ответ JSON. Я хочу обеспечить аутентификацию пользователей при каждом запросе API, за исключением действия пользователя. Мне нужно было бы добавить в свой токен код в Devise, чтобы при создании пользователей он также создал токен, а на сеансах/аутентификации он проверял токен.

Любая помощь или предложения были бы весьма признательны.

Если есть дополнительная информация, которую я могу предоставить, чтобы помочь понять мою проблему, сообщите мне.

Большое спасибо

Lee

+0

Ищите «изобретательный-токен-аутентичный» драгоценный камень. Это то, что вам нужно –

+0

@SergioTulentsev Спасибо, однако я хотел бы придерживаться того, как я в настоящее время создаю токены аутентификации, которые полностью отделены от Devise. Я просто хотел бы использовать Devise для создания пользователей и пользовательских сеансов. Мне нужно посоветовать настроить Devise для обработки этих запросов JSON. –

+0

В этом случае вы должны просто подклассифицировать соответствующие контроллеры разработки и добавить свою обработку json –

ответ

1

Я использовал, чтобы сделать так.

Сначала вам нужно переопределить контроллер устройства.

# Override the devise session and registration controller to do like this. 
resource.generate_auth_token! 

Затем напишите свой собственный метод аутентификации.

# Authenticate user. 
def current_user 
    @current_user ||= User.where(private_token: token).first 
end 
def authenticate! 
    render json:{error:'401 Unauthorized!'},status: 401 unless current_user 
end 

Но затем я нашел devise_token_auth. Я думаю, что они делают лучше.

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