ruby-on-rails - Rails 中的多个 token 和多个提供者身份验证

标签 ruby-on-rails api authentication token restful-authentication

我正在尝试为基于 Ruby on Rails 4.2.4 的 RESTful API 实现 token 身份验证系统

我正在考虑制作三个单独的模型/表格:

  • 用户表:包含与身份相关的信息,例如姓名、电子邮件、个人资料图片...
  • 身份验证表:包含有关用户如何进行身份验证的信息,例如提供者名称(电子邮件或 facebook)、加密密码或第 3 方提供者访问 token 和其他 oauth 内容。
  • token 表:存储认证用户的所有 token 。我需要将 token 与用户分开,因为每个用户都可以从多个设备登录,而且我不希望如果用户从桌面应用程序注销,它也会注销移动应用程序。

  • 这些是我的模型:

    模型/用户.rb
    class User < ActiveRecord::Base
       has_many :authentications
       has_many :tokens
    end
    

    模型/token.rb
    class Token < ActiveRecord::Base
      belongs_to :user
    end
    

    模型/身份验证.rb
    class Authentication < ActiveRecord::Base
      belongs_to :user
    end
    

    我不确定如何构建我的 Controller 来处理 token 和身份验证生成以及帐户链接。

    预先感谢您的任何帮助!

    最佳答案

    如果您使用 authenticate_or_request_with_http_token do |token, options| ,您可以通过用逗号分隔您的请求值,将更多 key 发送到您的“授权” header 中的“选项”参数中。 IE。

    Authorization: Token aaa, token2=bbb, token3=ccc
    
    这将解析并为您提供:
    token = aaa
    options = { 'token2' => 'bbb', 'token3' => 'ccc' }
    

    关于ruby-on-rails - Rails 中的多个 token 和多个提供者身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000784/

    相关文章:

    c# - 如何在 C# 中对 SMTP 进行身份验证

    android - 文本属性下方的 EditText 下划线

    .Net 核心 CORS 401 发布/放置

    api - 使用 Foursquare API 搜索私有(private)场所

    php - 如何生成 OTP 并通过短信将密码发送到手机

    python - 在DolphinDB的Python API中,使用s.loadTable和s.table加载内存表有什么区别?

    ruby-on-rails - 如何在 rails 3 Controller 生成器中使用 `--helper` 标志?

    ruby-on-rails - 从 View 调用辅助方法时发生rails “undefined method”

    ruby-on-rails - 在 Windows 上使用 Koala 时 SSL 失败

    ruby-on-rails - Rails 远程表单 collection_select onchange 错误