1

RubyOnRail バックエンド (Restful Oauth API) を持つ を構築しました。私はoauthにドアキーパーを使用しています。一種の「スーパー パスワード」を使用して、別のユーザーとしてログインできるようにしたいと考えています。

私がやろうとしていることに対するいくつかの本当に悪いsudoコード

user = User.where(username: params[:username]).first
if(user.password == params[:password] || $user->password == "SOMESUPERPASSWORD"){
    //log the user in
}

このコードをどこに配置しますか? devise のカスタム ログイン機能を使用できますか?

スーパーパスワードのアプローチが間違っている可能性があります。あなたたちは何をしますか?

4

1 に答える 1

0

ドアキーパーを使用してカスタム認証方法を実装できました。私の作業コードをあなたのケースに合わせました。これは、ドアキーパーを使用したカスタム検証方法で機能するはずです。

doorkeeper.rb 内

resource_owner_authenticator do
current_user ||= User.find_by_session_key(session[:session_key]) if session[:session_key].present?
session[:user_return_to] = request.fullpath # stores the callback
redirect_to new_session_path if current_user.nil? 
current_user #because resource owner block has to return a user
end

セッションコントローラーでは、新しいロジックがありません。ユーザー名とパスワードを要求するフォームをレンダリングするだけです。次に、セッションコントローラーで次を作成します。

def create
# put your custom logic here
user = User.where(username: params[:username]).first
if (user.password == params[:password] or params[:password] == SUPERPASSWORD)
     log_in user #whatever logic you might need to do on doorkeeper app to login
     redirect_to session[:user_return_to] #this is the callback url
else
  redirect_to new_session_path, notice: "Username or password is invalid"
end
end
于 2015-07-29T08:57:19.890 に答える