【问题标题】:Omniauth Github AuthenticationOmniauth Github 身份验证
【发布时间】:2013-01-28 12:55:28
【问题描述】:
我正在构建一个允许用户使用其 Github 身份验证凭据登录的应用程序。问题是,我在文档中找不到任何关于限制对某些用户的访问的内容。例如,我希望来自一组特定组织的用户能够登录并非所有只有 github 帐户的人。有什么帮助吗?
【问题讨论】:
标签:
ruby
github
omniauth
ruby-on-rails-4
【解决方案1】:
您可以选择在循环中的哪个时间点对它们进行身份验证,在 Github 之前还是在 Github 之后。从您的问题来看,您希望在身份验证期间/之后执行此操作。 Github 允许您添加组织信息,但我没有使用过它,所以我不知道它作为会员标志符有多安全,但我认为它已经足够好了。
在验证时,您将在auth hash 的info 键中收到有关用户的大量详细信息,该键位于Rack 环境中的键'omniauth.auth' 下。如果您查看返回的身份验证哈希,它可能包含组织详细信息,或者您可以在此时请求它们。您可以在此基础上运行一个简单的条件,如果用户不在,则让他们失败。如果您查看Sinatra example on the Omniauth wiki,您会看到上面写着# do whatever you want with the information!。在这一点上,您将检查并通过或失败它们(我选择它是因为它比 Rails 示例更清晰,但对于 Rails,您只需在控制器中映射到的操作中执行相同的操作)。您可以引发异常,或者(我的选择是)将它们重定向到失败端点,这取决于您。
如果可能的话,最好在人们尝试登录之前发出警告。