4

У меня есть приложение rails, которое использует токен для аутентификации пользователя. В настоящее время я передаю токен в качестве параметров. Я бы хотел изменить это. Я считаю, что это можно передать через html-заголовок. Я не понимаю, как использовать authenticate_or_request_with_http_token do |token, options|. My rails app на самом деле является сервером для моего iphone-клиента. I вещи, которые я не понимаю, являются:Пропускать токен аутентификации через http-заголовок

  1. Я знаю options это временное значение, но как будет работать, что между моим клиентом и сервером?

  2. Как я могу использовать это в своем коде сервера.

  3. Я могу использовать authenticate_or_request_with_http_token do |token, options| для проверки токена в заголовке, но как его вставить в заголовок после успешного создания сеанса.

Вот мой сервер Сессии Контроллер:

def create 
if @user && @user.authenticate(params[:password]) 
# @token = @user.auth_token 
@user.auth_token = SecureRandom.hex 
@user.save 
    respond_to do |format| 
     format.json {render :json => {:status => "200", :message => "Logged in successfully", :auth_token => @user.auth_token}} 
    end 
else 
    respond_to do |format| 
     format.json {render :json => {:status => "401", :message => "wrong credentials"}} 
    end 
end 
    end 

    def destroy 
    if(@user) 
     @user.auth_token = "" 
     @user.save 
     respond_to do |format| 
     format.json {render :json => {:status => "200", :message => "logged out successfully"}} 
     end 
    else 
     respond_to do |format| 
     format.json {render :json => {:status => "401", :message => "No User"}} 
     end 
    end 
    end 

def user 
    @user = User.find_by_auth_token(params[:auth_token]) 
end 
+0

Для установки пользовательских заголовков вы используете 'response.headers', что-то вроде' response.headers ["X-AUTH-TOKEN"] = auth_token' должно работать .., чтобы прочитать заголовок, который вы используете 'request.headers [" X -AUTH-TOKEN "]' – Orlando

+1

это работает, спасибо. Если вы опубликуете его в качестве ответа, я соглашусь с ним :) – nupac

ответ

4

установить пользовательские заголовки, которые вы используете response.headers.

Что-то вроде

response.headers["X-AUTH-TOKEN"] = auth_token 

должен работать .. читать заголовок, который вы используете

request.headers["X-AUTH-TOKEN"] 

X- в обозначении является хорошей практикой конвенции, все пользовательские заголовки должны иметь X- перед ,

+1

Использование X- устарело. –

+0

@ m.samy Я считаю, что вы правы, источник (http://tools.ietf.org/html/draft-ietf-appsawg-xdash-02), но это выглядит как черновик .. знаете ли вы, что этот документ был принят? – Orlando

+1

Больше обсуждений на префикс X и без префикса: http://stackoverflow.com/questions/3561381/custom-http-headers-naming-conventions – dmur