我在我的Rails 3.0.10应用程序中使用authlogic和omniauth进行身份验证。 但是,当我从omniauth提供程序获得回调时,我无法创建新的用户会话以便登录用户。
在other responses(甚至在authlogic docs中),它表示使用UserSession.create(@user, true)
应该能够创建并保留新会话。
但是,这对我不起作用。仅当@user
在数据库中有密码(通过直接在数据库中插入密码)时,它才有效。
但是使用第三方身份验证提供程序时没有密码,因此我无法登录用户。
如何在authlogic中如何在没有密码的情况下登录用户?
感谢。
答案 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。