保护RABL gem(Ruby on Rails)

时间:2013-01-17 09:53:28

标签: ruby-on-rails security api rabl

我使用了rabl gem

show.rabl

object @user
attributes :id, :name, :realname, :email

我得到了

{"user":{"id":1,"name":"username","email":"mail@mail.com"}}

问题是任何人都可以在打开http://website.com/users/user.json链接

时看到此信息

在我的数据库中,每个用户在登录后都有唯一的auth_token字段。

问题 - 我希望仅通过此链接查看此信息 - http://website.com/users/user.json?auth_token=yLrUAxWB2szkvx9jBEGv

1 个答案:

答案 0 :(得分:1)

创建支票或使用某些授权gem,例如cancan

原始示例,以便您可以掌握(未经测试,在手机上写下来......):

class MyController < ApplicationController
  before_filter :check_token_if_json
  respond_to :html, :json

  def show
    @user = User.find params[:id]

    respond_with(@user)
  end

  private

  def check_token_if_json
    if params[:format] == 'json'
      raise "Access denied" and return unless params[:token] == 'my_required_token'
    end
end