【问题标题】:Basic Authentication Ruby on Rails基本身份验证 Ruby on Rails
【发布时间】:2016-11-24 06:42:45
【问题描述】:

我正在构建一个使用 API 的应用程序,并且还具有成为具有登录、注册等功能的网站的功能。当我使用像 POSTman 这样的客户端服务器应用程序时,我想使用基本身份验证,但用户名身份验证的密码应该是用户的用户名和密码。当用户登录 API 时,它应该能够看到该特定用户的帖子。无论如何让应用程序使用用户的用户名和密码而不是每个用户的具体密码来实现基本身份验证?我一直在努力寻找有关此事的任何信息。任何帮助和见解将不胜感激,如果需要查看任何代码,我将很乐意展示它。

【问题讨论】:

    标签: ruby-on-rails basic-authentication


    【解决方案1】:

    这也可以在没有设计的情况下实现:

    before_action :require_authentication
    def require_authentication
      authenticate_or_request_with_http_basic do |u,p|
        user = User.find_by(username: u)
        true if user && user.authenticate(p)
      end
    end
    

    【讨论】:

    • 我有一个问题。当我使用此身份验证时,它可以工作,但它只验证一次。而且它不验证未登录的用户?有什么建议么? @mysmallidea
    • authenticate_or_request_with_http_basic 正在寻找一个真或假的返回值,因此如果您的方法返回得太早或引发异常,它可能会出现意外行为。我的建议是使用每种可能的组合对该控制器进行单元测试——正确和错误的密码、无密码等。这样你就可以确信它按预期工作。如果您遇到意外情况,应将其作为另一个问题发布。
    【解决方案2】:

    这可以使用devise 来实现。它是 Rails 的认证宝石。它的文档非常好。

    【讨论】:

    • 我之前已经将设计与我的应用程序合并,但效果不太好。您能否推荐一些对这样做有用的视频?我实际上已经在整个互联网上搜索了 api 并设计了视频大声笑。目前对于我的应用程序,我正在使用 api 密钥,但我发现这对于尝试访问 api 的普通用户来说太复杂了
    • 如果你使用 api,你应该使用github.com/lynndylanhurley/devise_token_auth
    • 至于视频,我能给你的不多。有一个带有 JWT 身份验证的。但是你需要知道什么是JWT以及如何处理它。
    猜你喜欢
    • 2018-05-15
    • 2011-02-02
    • 1970-01-01
    • 2014-09-03
    • 2018-04-27
    • 2018-03-02
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多