Вы делаете это, передавая дополнительный параметр и выбирая mo del, вы хотите аутентифицироваться на основе этого параметра. Это похоже на ответ gdonato, но возможности в привратнике лучше использовать для управления разрешениями для аутентифицированного приложения (т. Е. «Дайте этому приложению разрешение читать X и писать Y от вашего имени»).
Вот что я использую
resource_owner_from_credentials do |routes|
if params[:user_type].present?
case params[:user_type]
when 'user'
u = User.find_for_database_authentication(email: params[:email])
when 'employer'
u = Employer.find_for_database_authentication(email: params[:email])
when 'admin'
u = Administrator.find_for_database_authentication(email: params[:email])
end
end # I don't want a default auth user_type, so no 'else' block for me
user if user && user.valid_password?(params[:password])
end
Обратите внимание, что если вы должны были сделать это с помощью областей вместо того, что пары привратника не уже использует для чего-то другого, вы должны сконфигурировать области действия как:
# These are found in doorkeeper.rb, but they're commented by default.
# You would use whatever scopes you're wanting to check
default_scopes :public
optional_scopes :write, :update
Использование сферы как пары, чтобы различать между пользователем и Администратором может работать без перетасовывает default_scopes или optional_scopes в doorkeeper.rb, но только в качестве побочного эффекта обзорных, что привратник ожидает.
СПАСИБО! Я отказался от этого давно, но сегодня мне пришлось завершить проект. Я вернулся сюда, намереваясь снова опубликовать этот вопрос и нашел ваш ответ. Это именно то, что я искал. СПАСИБО! – 2014-10-28 22:35:54