Ruby on Rails - RESTful API身份验证

时间:2014-06-29 22:32:12

标签: ruby-on-rails ruby api rest authentication

我使用ruby on rails构建一个简单的REST API,允许用户轻松创建帐户。最近,我尝试使用API​​令牌保护API。我一直在使用Google Chrome网上应用店中的Advanced Rest Client来测试我的API。据我所知,当我尝试访问调用时,我收到了来自我的REST客户端测试应用程序的消息,如下所示:

enter image description here

当我尝试使用Advanced Rest Client成功验证时出现问题。这是我用来创建令牌并检查用户是否经过身份验证的控制器代码:

class Api::UserController < ApplicationController
  skip_before_filter  :verify_authenticity_token

  TOKEN = "secret"
  before_action :authenticate

  def index
    @users = User.all

    respond_to do |format|
      format.json { render json: @users }
    end
  end

  def create
    @user = User.new()
    @user.first_name = params[:first_name]
    @user.last_name = params[:last_name]
    @user.email = params[:email]
    @user.password = params[:password]

    respond_to do |format|
      if @user.save
        @response = {:status => "201", :message => "User successfully created."}
        format.json { render json: @response, status: :created }
      else
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end


  # private methods in the UserController class
  private

  def authenticate
    authenticate_or_request_with_http_token do |token, options|
      token == TOKEN
    end
  end
end

这很简单,似乎正在完成它的工作,因为我无法使用Advanced Rest Client进行身份验证。我试图在HTTP标头中设置API令牌,但似乎无法使语法正确。以下是我尝试过的几个例子:

enter image description here

enter image description here

最后,

enter image description here

我做错了什么? API令牌是否未存储在HTTP标头中?请帮忙!

1 个答案:

答案 0 :(得分:3)

您的标头不正确,密钥应为Authorization

尝试将其作为Raw标头:

Authorization: Token token=secret