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 提供者之一,则返回true。

于 2012-05-17T22:29:47.223 回答