2

SSO カスタム戦略を、devise が使用する唯一の戦略にしたいと考えています。私はこれをやっています:

config.warden do |manager|
  manager.default_strategies :my_sso_strategy
end

これは私が立ち往生するところです。戦略を実行したいのですが、これは次の方法で実行できると思いました。

app/controllers/devise/sessions_controller.rb

しかし、私の戦略が発動されるようには見えません。

問題を引き起こしている可能性があると考えて、 User モデルのデバイス宣言から :authenticatable / :database_authenticatable を取り除きました。
サインイン/サインアウト ルートを手動で作成した後 (:authenticatable によって作成されるため)、AbstractController::ActionNotFound エラーが発生します。

この時点で、私はどのように続けるか途方に暮れています。

ビューは、SSO アプリケーションから取得した資格情報を自動送信するように正しく設定する必要があります (authlogic で機能しました)。

誰かがこれに似たようなことをしましたか?

4

2 に答える 2

0

他の人が「:user」スコープを使用しているのを見て、抜粋にそれがないことに気づきました。おそらく、それが元のエラーの原因です。

config.warden do |manager|
  manager.default_strategies(:scope => :user).unshift :fb_database_authenticatable
end
于 2012-05-02T04:33:16.563 に答える
0

戦略をどのようにコーディングしたかを共有しない限り、確かなことは言えません。簡単な答えは、有効な必要があるということです? 戦略をいつ使用するかを指定するために定義されたメソッド。1 つの戦略のみを使用したいので、有効な方法は次のようになると思います..

Warden::Strategies.add(:my_sso_strategy) do 
  def valid?
    true
  end 

  def authenticate!
   #do authentication
  end
end
于 2011-06-24T21:28:55.563 に答える