Разработка и аутентификация с CURL! - PullRequest
1 голос
/ 19 июня 2011

Я хотел бы иметь возможность проходить аутентификацию в стиле локон!

Поэтому я хотел бы получить токен при входе в систему:

curl -X POST 'http://localhost:3000/users/sign_in.json' -d 'user[email]=em...@provider.us&user[password]=pass' 

Но если я выполню это действие, я получу только:

{"email":"em...@provider.us","name":"Name of the user"} 

Как я могдобавить некоторые конкретные поля, такие как authentic_token?

Правильно ли то, что я хочу сделать?Есть ли другой лучший способ сделать это?

Спасибо!

1 Ответ

3 голосов
/ 27 июня 2011

Я создал контроллер с именем SessionController

class Users::SessionsController < Devise::SessionsController
  append_view_path 'app/views/devise'
    def create
      respond_to do |format|
        format.html { super }
        format.json {
          warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
          current_user.ensure_authentication_token!
          render :json => {:user => current_user.api_attributes, :auth_token => current_user.authentication_token}.to_json, :status => :ok
        }
      end
    end

    def destroy
      respond_to do |format|
        format.html { super }
        format.json {
          warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
          current_user.empty_authentication_token!
          render :json => {}.to_json, :status => :ok
        }
      end
    end
end

И добавил это в корневой файл:

devise_for :users, :controllers => { :sessions => "users/sessions" }

И он работает: -)

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