пользовательский вход для разработки - PullRequest
3 голосов
/ 01 марта 2011

Теперь я использую гем devise и после успешной авторизации перенаправляет пользователя на корневую страницу.

Как изменить действие sign_in, чтобы оно возвращало массив json следующим образом: {"auth_result":"1"} вместо перенаправления?

Возможно ли это? Я не нашел рецептов для этого в вики устройства.

1 Ответ

2 голосов
/ 02 марта 2011

Devise в настоящее время не обрабатывает ответы JSON - см. Проблему на github .Поэтому вам придется создать пользовательский session_controller для обработки вашего ответа.Взгляните на реализацию на github , чтобы получить представление.Я собрал несколько грубых псевдокодов, которые, надеюсь, помогут вам начать:

class Users::SessionsController < Devise::SessionsController
  def create
    resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
    set_flash_message :notice, :signed_in
    # Remove sign_in_and_redirect(resource_name, resource) and replace with the following, I think
    sign_in(resource_name, resource)
    respond_to do |format|
      format.json { render :json => hash_of_things_to_return.to_json }
    end
  end
end

Затем в вашем файле rout.rb вам нужно будет указать новый контроллер - devise_for :users, :controllers => { :sessions => "users/sessions" }

Надеюсь, что этопомогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...