2012-06-12 23 views
6

Actualmente, devise está configurado para aceptar autenticación de señales a través de URL y el rizo funciona bien¿Cómo configurar la configuración para aceptar el token de autenticación en el encabezado HTTP?

curl 'http://localhost/index.json?auth_token=TOKENVALUE' 

Ahora me gustaría pasar el TOKENVALUE a través de cabecera HTTP en lugar de URL, ¿cómo puedo idear config para obtener el TOKENVALUE de bien encabezado HTTP o URL? Tal que tanto los de arriba y siguientes solicitudes enrollamiento trabajarán:

curl 'http://localhost/index.json' -H 'Authorization: Token token="TOKENVALUE"' 

como se muestra en this railscast.

Respuesta

1

primero Añadir esto a su Gemfile https://github.com/stvp/devise_header_token continuación, puede agregar una configuración para que en su config/inicializadores/devise.rb

# Configuration for :token_authenticatable 
# Defines name of the authentication token params key 
config.token_authentication_key = 'AUTH-TOKEN' 
1

Diseñar permite la autenticación de token de autenticación a través de autenticación básica. Si se mira la source verá este:

para plataformas de corte, se puede utilizar la autenticación básica pasar el token como nombre de usuario y contraseña en blanco . Dado que algunos clientes pueden requerir una contraseña, puede pasar "X" como contraseña y simplemente se ignorará.

1

Las cosas han cambiado desde que se hizo esta pregunta, en ese legado ya no tiene el token de autenticación funcionalidad incorporada. Fue extraído a una gema separada, devise-token_authenticatable. Estoy usando esa gema y quería hacer lo mismo, la misma persona que hizo la pregunta.

me di cuenta de que tenía que establecer esto en mi config/inicializadores/devise.rb:

config.http_authenticatable = true

lo intenté a través de rizo y ha funcionado. En mis pruebas RSpec yo era capaz de poner el signo en la cabecera HTTP como esto:

user = FactoryGirl.create(:user) 
header = ActionController::HttpAuthentication::Token.encode_credentials(
    user.authentication_token) 
get "/api/v1/your_url", 
    { }, 
    { 
     'Accept' => 'application/json', 
     'Authorization' => header 
    } 

Espero que esto ayude a alguien por ahí!

Cuestiones relacionadas