1

Rails 3.0.10 アプリで認証に authlogic と omniauth を使用しています。ただし、omniauth プロバイダーからコールバックを取得すると、ユーザーをサインインするための新しいユーザー セッションを作成できません。

の応答(およびauthlogic docsでさえ) では、 usingUserSession.create(@user, true)は新しいセッションを作成して永続化できるはずであると述べています。

しかし、これは私にはうまくいきません。データベースにパスワードがある場合にのみ機能@userします(パスワードをデータベースに直接挿入することにより)。

しかし、サード パーティの認証プロバイダーを使用する場合はパスワードがないため、ユーザーをサインインさせることができません。

authlogic でパスワードなしでユーザーをサインインする方法はありますか?

ありがとう。

4

1 に答える 1

1

Userモデルで次のようなことができます。

acts_as_authentic do |config|
  external = Proc.new { |r| r.externally_authenticated? }

  config.merge_validates_confirmation_of_password_field_options(:unless => external)
  config.merge_validates_length_of_password_confirmation_field_options(:unless => external)
  config.merge_validates_length_of_password_field_options(:unless => external)
end

externally_authenticated?ユーザー情報を提供しているものをチェックするユーザーの単なるメソッドであり、omniauth プロバイダーの 1 つである場合は true を返します。

于 2012-05-17T22:29:47.223 に答える