我正在使用Devise和Omniauth通过原生(设计),脸书和谷歌+
提供登录理论上,用户可以连续使用任何方法登录,我想注册最后一种身份验证方法。对于Facebook和G +,我可以在我的用户表上的find_ *方法中记录它,但是设计' native' auth是一本封闭的书。
我能想到的最好的方法是在登录之前更新控制器中的会话变量,然后使用warden身份验证回调或子类会话控制器
如下:Ruby on Rails Devise code after login
直接用auth类型更新用户,但看起来有点乱。
答案 0 :(得分:1)
Devise有一个可以调用的方法,它将在用户模型中的数据库身份验证之后运行,然后您可以在此处更新属性。
class User < ActiveRecord::Base
...
devise :database_authenticatable, :omniauthable ....
...
def after_database_authentication
update_attribute(:auth_type, 'database')
end
...
end