我正在Rails应用程序中使用Sorcery进行身份验证。我有它的设置很好,我可以添加用户的用户名/密码或通过外部身份验证(目前只使用twitter )。然而,有一件事我还没有弄清楚,那就是如何向现有用户添加身份验证,即。由username创建的用户,该用户可能希望在以后添加其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而不是provider。
在Sorcery中没有用于此的公共方法。有没有人想出了如何将这一功能嵌入到应用程序中?
发布于 2012-05-10 04:52:26
我最近使用https://github.com/rcarter/sorcery添加了将提供者链接到已通过身份验证的用户的功能。这能做你想要的吗?
我应该警告你,它试图将access_token存储在你的用户模型中……你可能想要删除它。请在此处查看更改:https://github.com/rcarter/sorcery/commit/f3984749659bceb7f7438cae8ea95ba5a415d1e2
发布于 2020-08-30 15:23:35
这是一个非常老的问题,但我只是想添加我的解决方案,以实现这一点与微软的is。我需要让用户使用Microsoft SSO登录。我希望能够创建用户帐户,并将其设置为使用其Microsoft凭据登录。我使用的是Ruby 2.7,rails 5.1和Sorcery 0.15。我使用了sorcery wiki中的外部提供程序示例代码从https://github.com/Sorcery/sorcery/wiki/External开始
在Azure Active Directory端:
http://localhost:32795/oauth/callback?provider=microsoft)添加网络重定向URI
在你的应用中:
中为MSFT回调和外部提供者提供了一条路由
app/config/initializers/sorcery.rb
config.microsoft.key = <your Application(client)ID>
config.microsoft.secret = <client secret you generated in Azure>
config.microsoft.callback_url = "http://localhost:3000/oauth/callback?provider=microsoft"
config.microsoft.user_info_mapping = {:email => "userPrincipalName", :username => "userPrincipalName"}
config.microsoft.scope = "openid email https://graph.microsoft.com/User.Read"您的应用程序现在将使用MSFT ID进行登录。请注意,即使您注销了您的应用程序,当您单击链接以使用MSFT登录时,它也会自动将您登录,因为浏览器会保存您的MSFT凭据。如果你转到你的MSFT帐户并注销,你将需要在Azure中设置注销URI,该URI将通知你的应用程序也要注销。或者,你可以设置你的应用程序在你注销时清除办公室的cookies。
https://stackoverflow.com/questions/10378227
复制相似问题