Android 如何为我的应用程序创建安全的Rails REST Api?
因此,我正在为Android制作一个需要网络后端的应用程序。该网站正在RubyonRails中构建。它有面向客户端的一面(漂亮的HTML页面),但我也希望它能够通过JSON向我的Android应用程序提供信息。然而,我不希望全世界都能得到这个JSON,因为它包含一些可能危险的信息。我如何锁定JSON格式的页面,并且仍然可以从Android应用程序访问它们 作为记录,我使用Rails 3.1Android 如何为我的应用程序创建安全的Rails REST Api?,android,ruby-on-rails,authentication,rest,Android,Ruby On Rails,Authentication,Rest,因此,我正在为Android制作一个需要网络后端的应用程序。该网站正在RubyonRails中构建。它有面向客户端的一面(漂亮的HTML页面),但我也希望它能够通过JSON向我的Android应用程序提供信息。然而,我不希望全世界都能得到这个JSON,因为它包含一些可能危险的信息。我如何锁定JSON格式的页面,并且仍然可以从Android应用程序访问它们 作为记录,我使用Rails 3.1具有安全的密码来进行现场用户身份验证,并且我希望有一些对HTML请求开放但对JSON锁定的路由(例如,/us
具有安全的密码
来进行现场用户身份验证,并且我希望有一些对HTML请求开放但对JSON锁定的路由(例如,/users
url应该可以作为HTML访问,但作为JSON应该只能通过某种安全方法从我的应用程序访问)
有没有办法做到这一点,或者API必须是一个单独的应用程序(这会给DB设置带来极大的不便,等等)
澄清:
基本上,我想做的是从我的Rails应用程序中创建一个基于令牌的安全JSON API,我不想使用Desive或其他会迫使我改变我存储用户/通行证信息的方式的东西。根据您使用的Rails版本,部分工作已经通过respond\u 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中提取非常相同的数据。