我在 Rails 应用程序中使用 Sorcery 进行身份验证。我已经设置好了,我可以通过用户名/密码或外部身份验证添加用户(目前仅使用 twitter)。但是,我无法弄清楚的一件事是如何向现有用户添加身份验证,即。由用户名创建的用户,该用户可能希望稍后添加其 Twitter 帐户作为登录方式。
我尝试向外部模块添加一个方法来启用此功能...
module Sorcery
module Controller
module Submodules
module External
module InstanceMethods
protected
def add_provider_to_user(provider)
provider_name = provider.to_sym
provider = Config.send(provider_name)
user_hash = provider.get_user_hash
config = user_class.sorcery_config
user = current_user.send(config.authentications_class.to_s.downcase.pluralize).build(config.provider_uid_attribute_name => user_hash[:uid], config.provider_attribute_name => provider)
user.save(:validate => false)
return user
end
end
end
end
end
end
......但这没有用。我似乎无法让 Config 类像在内部方法中那样运行,Config.send('twitter')
总是返回 nil 而不是提供者。
Sorcery 中没有公开的方法。有没有人想出如何将此功能修补到应用程序中?