разработка и аутентификация

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

class ApiController < ApplicationController
  def signin
    warden.authenticate(params[:email], params[:password])
    render :json => current_user.to_json
  end
end

Когда я нажимаю на это что-то вроде http://localhost:3000/api/signin?email=theemailaddress&password=thepassword

Я получаю сообщение: «Недопустимая стратегия для адреса электронной почты», вот стек:

warden (1.0.4) lib/warden/proxy.rb:323:in `_fetch_strategy'
warden (1.0.4) lib/warden/proxy.rb:307:in `block in _run_strategies_for'
warden (1.0.4) lib/warden/proxy.rb:306:in `each'
warden (1.0.4) lib/warden/proxy.rb:306:in `_run_strategies_for'
warden (1.0.4) lib/warden/proxy.rb:279:in `_perform_authentication'
warden (1.0.4) lib/warden/proxy.rb:90:in `authenticate'
actionpack (3.0.7) lib/action_controller/metal/implicit_render.rb:5:in `send_action'

Что мне нужно, чтобы что-то подобное получилось?


person Steven    schedule 05.06.2011    source источник


Ответы (1)


Вам необходимо определить собственную стратегию надзирателя и проверить заголовки запроса. Посмотрите, что я сделал здесь.

person David    schedule 05.06.2011
comment
Вдобавок к этому мне нужно было указать стратегию при вызове надзирателя. надзиратель.authenticate!(:loginstrategy) - person Steven; 05.06.2011
comment
Также полезно отметить, что как только вы получите пользователя, вы можете вызвать user.validate_password?(пароль) - person Steven; 05.06.2011
comment
Это правда. В моем случае я не использовал пароли, имя пользователя было всем, что мне было нужно для создания/получения учетной записи, потому что прокси обрабатывал всю предварительную аутентификацию. - person David; 05.06.2011