2014-02-15 166 views
0

只有當HTTP標頭中包含的授權令牌與存儲在users表中的令牌相匹配時,我才允許訪問資源。 我使用捲曲如下圖所示訪問資源:在tasks#index方法從授權HTTP標頭獲取認證令牌的值

$ curl http://localhost:3000/api/v1/tasks.json -H 'Authorization: Token token="S8S4MPqFNdDz3G1jLsC9"'

我想檢查令牌是否上面存儲在數據庫中當前用戶的身份驗證令牌相匹配。 我怎樣才能獲得令牌值作爲一個實例變量,這樣我可以使用它,如下圖所示:

def index 
    @token = ??? 
    if User.exists?(:authentication_token => @token) 
    ### code to access the resource 
    else 
    authenticate_user! 
    end 
end 

回答

1

從這個railscast,我已經找到了最好的解決方案是使用軌道authenticate_or_request_with_http_token方法是這樣的:

class Api::V1::TasksController < ApplicationController 
    before_filter :restrict_access 
    respond_to :json 

    def index 
    @user = User.where("users.authentication_token IS NOT NULL").first 
    @tasks = @user.tasks 
    end 

private 

    def restrict_access 
    authenticate_or_request_with_http_token do |token, options| 
    User.exists?(authentication_token: token) 
    end 
end