【问题标题】:Rails API with a single access key具有单一访问密钥的 Rails API
【发布时间】:2013-01-17 17:12:59
【问题描述】:

搜索 S/O 后,没有找到直接回答我问题的内容,所以我会问:

我想要一个由单独的后端 Rails 服务器提供支持的前端 Web 应用程序(仅 Javascript)。因此,为了获取和存储数据,Web 应用程序向 Rails 服务器发送请求。我的问题:

我怎样才能确保对服务器的请求只给出一个 如果请求来自 Web 应用程序是否成功响应? 那么,如何用 Rails 实现呢? (第二部分我可以 大概弄清楚了,第一个问题是最重要的。)

编辑:我认为这部分在阅读回复后可能不清楚——我只有 一个 客户端用于服务器。也就是说,

我希望服务器只接受来自前端网络应用的响应 并且没有其他来源(也就是说,某人不应该能够输入 在他们浏览器的 url 中,并从 服务器)。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 api rails-api


    【解决方案1】:

    您可以实施某种身份验证。设计可以帮助解决这个问题,将身份验证信息存储在用户会话中。然后在你的控制器中你可以使用类似before_filter :authenticate_user!

    如果您的服务器在开放的互联网上可用,您要么需要命名用户身份验证(对身份验证之外的其他事情有用,例如跟踪用户),要么将其作为公共 api 运行,而不关心用户是否点击它(但你需要费率限制以避免无意的 ddos​​,增加了另一层复杂性)。

    【讨论】:

    • 没有用户类型——也许我没有正确沟通,但服务器只有一个客户端。客户端(前端 Web 应用程序)应该是唯一允许向服务器发出请求的对象。
    • 我会推出自己的 HTTP 基本身份验证并在客户端中硬编码密码/用户。在客户端网络应用中可以多个用户登录吗?
    • 根本没有用户。它只是查询服务器以获取和发送信息(更具体地说,它存储和从服务器检索的数组)。另外,我正在考虑做你正在做的事情——对客户端进行硬编码——但唯一的问题是人们可以只查看正在发送的请求,获取那些硬编码的 API 密钥,使用它们发出请求,然后钥匙将毫无意义。
    • 客户端和服务器都在防火墙后面吗?我们有一些应用程序和内部 api 仅因为无法通过 Internet 访问而保持打开状态。我认为你处于一个艰难的境地,如果你的服务器可以在开放的互联网上使用,你要么需要命名用户身份验证(除了身份验证之外,还有其他用途,比如跟踪用户),或者将其作为公共 api 运行而不关心是否用户点击它(但您需要限制速率以避免无意的 ddos​​,增加另一层复杂性)。
    • 好的,知道了。我会这样做。也许我增加了一层额外的复杂性,因为我正在开发后端,而我的伙伴正在开发前端。最后一件事——如果可以的话,把你最后的评论作为你的答案的一部分,因为它回答了我的问题。
    【解决方案2】:

    创建某种身份验证系统.. 以便 ServerApp 知道请求来自受信任的来源。

    存储数据后.. 根据成功或失败,您可以返回带有适当消息的 Json/Xml 数据。

    不确定您还要求什么,如果您需要进一步的帮助,请告诉我。

    【讨论】:

    • 我的问题更多的是“如何构建这个身份验证系统?”而不是“这个过程是如何工作的”。我想知道如何确保服务器应用程序只接受来自一个来源的响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 2012-06-29
    • 2015-03-27
    • 2016-10-29
    相关资源
    最近更新 更多