【问题标题】:How to use devise gem for authentication in API-only Rails application如何在仅 API 的 Rails 应用程序中使用 devise gem 进行身份验证
【发布时间】:2016-06-18 05:10:09
【问题描述】:

我想创建一个带有设计 gem 的 rails API 以进行身份​​验证。 我正在使用 Chrome Postman 来检查 API 输出。

我的环境:

  • Rails 4.2
  • Ruby 2.3

我做了什么:

  1. rails new my_api
    cd my_api
    
  2. Gemfile中添加了设计宝石

  3. bundle install
  4. 添加

    config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
    

    environment/development.rb

  5. 使用rails console 创建了一个用户

之后我尝试从邮递员登录。 我将emailpassword 放入邮递员的标题中。

POST  http://localhost:3000/users/sign_in

标题

电子邮件abcd@gamilcom

密码abcd1234

但它没有进行身份验证。我需要做什么?

【问题讨论】:

标签: ruby-on-rails devise


【解决方案1】:

您可能希望在 API 上下文中使用 knockdevise_token_auth。小心,您的电子邮件似乎无效。我不知道 Postman,但 POST 参数应该存在于您的 HTTP 请求的正文中。

【讨论】:

  • 请注意,knock 不支持 OAuth,devise_token_auth 需要 cookie 才能工作。
  • 说到 JWT(和设计):这篇文章对我很有帮助 Stop using JWT for sessions。我仍在使用 Rails 会话 Cookie 进行 API 身份验证
【解决方案2】:

HTTP Basic Auth 在 Devise 上默认关闭。启用它很简单,对于大多数 API 用途,基本身份验证就足够了。

您需要做两件事来启用 HTTP 基本身份验证:

  • :database_authenticatable 用户/帐户模型中的策略
  • config.http_authenticatable = true 在设计初始化程序中

在此处查看更多信息: https://github.com/plataformatec/devise/wiki/How-To:-Use-HTTP-Basic-Authentication

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多