我在Rails應用中使用Sorcery進行身份驗證。我已經設置好了,我可以通過用戶名/密碼或通過外部認證來添加用戶(目前只使用twitter)。然而,我無法弄清楚的一件事是如何向現有用戶添加認證,即。通過用戶名創建了一個用戶誰可能想在以後添加他們的Twitter帳戶登錄的一種手段Rails + Sorcery:向現有用戶添加外部身份驗證
我嘗試添加一個方法到外部模塊啓用此功能...
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中沒有這方面的公開方法。有沒有人想出瞭如何將這個功能修補到應用程序中?
剛一說明,我是通過我的認證控制器作爲一個曾是「打補丁」的魔法外部模塊的解決方案同樣感興趣。上面的例子只是基於我在github上看到的一些補丁請求而做的嘗試。 – Andrew