我使用ruby on rails构建一个简单的REST API,允许用户轻松创建帐户。最近,我尝试使用API令牌保护API。我一直在使用Google Chrome网上应用店中的Advanced Rest Client
来测试我的API。据我所知,当我尝试访问调用时,我收到了来自我的REST客户端测试应用程序的消息,如下所示:
当我尝试使用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令牌,但似乎无法使语法正确。以下是我尝试过的几个例子:
和
最后,
我做错了什么? API令牌是否未存储在HTTP标头中?请帮忙!
答案 0 :(得分:3)
您的标头不正确,密钥应为Authorization
尝试将其作为Raw标头:
Authorization: Token token=secret