5

因此,我正在为需要 Web 后端的 Android 应用程序。该网站正在使用 Ruby on Rails 构建。它有一个面向客户端的端(漂亮的 HTML 页面),但我也希望它能够通过 JSON 向我的 Android 应用程序提供信息。但是,我不希望全世界都能得到这个 JSON,因为它包含一些可能危险的信息。如何锁定 JSON 格式的页面并仍然可以从 Android 应用程序访问它们?

作为记录,我使用 Rails 3.1has_secure_password进行现场用户身份验证,并且我希望有一些对 HTML 请求开放但对 JSON 锁定的路由(例如,/usersurl 应该可以作为 HTML 访问,但可以作为 JSON 访问)只能通过某种安全方法从我的应用程序访问)。

有什么方法可以做到这一点,还是 API 必须是一个单独的应用程序(这对于数据库设置等来说会非常不方便)?

澄清:基本上我想做的是从我的 Rails 应用程序创建一个安全的基于令牌的 JSON API,我不想使用 Devise 或其他会迫使我改变我已经存储用户/通行证信息的方式的东西。

4

1 回答 1

2

根据您使用的 Rails 版本,部分工作已经使用 respond_to 方法完成,该方法允许您为同一个 url 提供 JSON 和 HTML。现在,要锁定 JSON 访问,您可以定义一个检查应用程序访问的方法,并在提供 JSON 响应时调用它

def with_access_check()
  if allowed # Or any verification you want.
    yield
  else
    # Raise a 403 maybe?
  end
end

# Then in every method that needs a check:
respond_to :json { with_access_check { render :json => @stuff } }

最后,除非您在 json 和 html 视图上提供非常不同的数据(如果您对两者使用相同的 url,这很奇怪)请考虑没有什么可以阻止攻击者/恶意用户从您的 HTML 中提取相同的数据.

于 2012-09-22T09:03:22.300 回答