在authlogic中创建没有密码的新用户会话

时间:2012-05-17 22:04:04

标签: ruby-on-rails ruby-on-rails-3 authlogic omniauth

我在我的Rails 3.0.10应用程序中使用authlogic和omniauth进行身份验证。 但是,当我从omniauth提供程序获得回调时,我无法创建新的用户会话以便登录用户。

other responses(甚至在authlogic docs中),它表示使用UserSession.create(@user, true)应该能够创建并保留新会话。

但是,这对我不起作用。仅当@user在数据库中有密码(通过直接在数据库中插入密码)时,它才有效。

但是使用第三方身份验证提供程序时没有密码,因此我无法登录用户。

如何在authlogic中如何在没有密码的情况下登录用户?

感谢。

1 个答案:

答案 0 :(得分: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提供者之一,则返回true。