Omniauth策略 - 管理多个用户共享系统(Omniauth Strategies - Mana

2019-10-19 05:32发布

我知道答案会是,但我只是想试试我的运气。 以Facebook作为例子说,我使用omniauth-facebook允许用户登录到我的网站。 在登录时,用户可以设置一些隐私的数据在本网站。

占用的情况下,我有两个用户U1U2 。 他们都使用具有单独登录Facebook我的网站,并已分别授权的应用程序。 现在考虑共享系统, U1来到我的网站上点击Login using Facebook ,验证自己和一切正常。 U1离开,但不会从日志出局Facebook 。 现在U2来,点击Login using Facebook并且在使用自动登录U1的凭据。 我不存储用户access_token在任何点。

有没有什么办法可以阻止这种情况发生? 我能想出的最好的是在我的网站添加一个中介页面,从FB认证和回调之间,并询问用户,如果这是从FB目标用户为她。 如果是的话,请继续,否则带她到登录页面。 但是,这不处理的事实, U2仍然可以看到U1的页面。

任何输入将不胜感激。

编辑:我针对FacebookTwitterLinkedInGoogle 。 所以我要寻找一个共同的解决方案。 我知道有用于强制认证的可能性FacebookTwitter ,但我想实现一个共同的解决方案。

Answer 1:

Facebook的(和omn​​iauth Facebook的)提供了选项auth_type ,以防止这一点:

use OmniAuth::Builder do
  provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
    :auth_type => 'reauthenticate'
end

使用此选项,用户将被要求输入他的密码,当他试图登录使用Facebook的服务。 检查出宝石的文档获取更多信息。

最后一点:这个选项只存在omniauth Facebook的。 其他OmniAuth供应商可能有类似的选项,但其他人可能有没有。 例如,Twitter也有一个force_login选项,当设置为true将退出从Twitter用户。 有时这是你想要的,有时不是。 注销从其他服务的用户可以说是相当麻烦的。 其实我想如果所有的供应商有这两个选项,所以我们可以选择使用哪一个(从外部服务注销用户或只要求再次输入密码),但我想我们将不得不满足于我们有。 例如,据我所知,谷歌有这种风险没有保障。



文章来源: Omniauth Strategies - Managing multiple users on a shared system
标签: omniauth