Sie tun dies, indem Sie einen zusätzlichen Parameter übergeben, und wählen Sie die mo del, die Sie basierend auf diesem Parameter authentifizieren möchten. Dies ist der Antwort von gdonato ähnlich, aber Scopes in doorkeeper werden besser dafür verwendet, zu verwalten, welche Berechtigungen der authentifizierten App erteilt werden (z. B. "Gib dieser App die Erlaubnis, X zu lesen und schreibe Y in deinem Namen").
Hier ist, was ich verwende
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
Beachten Sie, dass, wenn Sie diese mit Tive anstelle eines param, die Pförtner für etwas anderes nicht bereits mit täte ist, werden Sie die Bereiche konfigurieren müssen wie:
# 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
als param verwendet Umfang zwischen User und Admin zu unterscheiden könnte funktionieren ohne default_scopes oder optional_scopes in doorkeeper.rb jiggering, sondern nur als Nebeneffekt des Scoping dass Pförtner erwartet.
DANKE! Ich habe das vor langer Zeit aufgegeben, aber heute musste ich das Projekt abschließen. Ich kam hierher zurück, um diese Frage noch einmal zu stellen und fand deine Antwort. Es war genau das, wonach ich suchte. DANKE! –