2011-10-26 9 views
7

Non riesco a trovare un semplice tutorial su come abilitare l'autenticazione con token ad accesso singolo utilizzando authlogic. C'è della documentazione ma non è molto utile.Token Authlogic e Single Access

ho aggiunto al mio single_access_token db, ho aggiunto questo:

single_access_allowed_request_types :any 

alla mia classe Session. ma ancora non capisco come un utente viene autenticato utilizzando il parametro delle credenziali che viene passato su ogni chiamata. Il mio require_authentication prima del filtro fa un controllo standard per current_user come questo:

def current_session 
    return @current_session if @current_session 
    @current_session = Session.find 
    end 

    def current_user 
    @current_user = current_session && current_session.record 
    end 

Ma è sufficiente per lavorare? Il metodo Session.find fa la magia per registrare l'utente è basato sui miei param o devo creare un metodo separato che controlli effettivamente se il parametro user_credentials è lì e poi trovare l'utente in base ad esso e quindi loggarlo. Sono confuso se sto davvero "creando" una nuova sessione ogni volta che uso un SAT o se sto impostando l'utente corrente in un filtro precedente ogni volta che viene effettuata una chiamata API.

Qualsiasi aiuto sarebbe fantastico! Grazie!

risposta

2

Ho implementato una soluzione single_access_token con authlogic e quello che dovevo fare era aggiungere single_access_allowed_request_types :all al modello UserSession.

Quindi ho aggiunto quanto segue al controller dove volevo consentire l'autenticazione single_access_token.

def single_access_allowed? 
     ["some_action_1","some_action_2","some_action_3"].include?(action_name) 
    end 

Sembra che manchi il codice del controller. Quindi se avessi due azioni "get_user_info" e "update_user_info" dovresti aggiungere.

def single_access_allowed? 
     ["get_user_info","update_user_info"].include?(action_name) 
    end 
+0

Daniel, ha fatto questo lavoro?In caso contrario, fammi sapere quali problemi stai riscontrando e cercherò di aiutarti. Grazie! –

3

L'unica cosa che ho dovuto fare fare questo lavoro era

  • aggiungere un campo chiamato single_access_token ai miei utenti tavola
  • aggiungere un metodo chiamato single_access_allowed? a ciascun controller in cui l'accesso unico dovrebbe essere permesso.

Questo metodo sarebbe simile a questa:

# method for authlogic: defines for which action the single-access-token can be used 
def single_access_allowed? 
    (action_name == "deliver") || (action_name == "delivery_status") 
end 

non ho dovuto aggiungere nulla in UserSessionsController o l'oggetto UserSession. Authlogic lo gestisce per te. Con un token ad accesso singolo viene autenticata una sola richiesta, quindi non esiste una sessione persistente. Ogni richiesta deve inviare il token ad accesso singolo. Da qui il nome: un token per ottenere un singolo accesso :)

Spero che questo aiuti.

0

Il codice sorgente di authlogic è la migliore documentazione sul token di accesso singolo. This is the specific section that discusses it.

Sarà necessario aggiungere un metodo privato chiamato single_access_allowed? nel controller in cui si sta tentando di consentire l'accesso agli utenti. Il token di accesso singolo viene passato per impostazione predefinita come parametro con codifica URL utilizzando il nome user_credentials. Quindi per colpire il controller senza effettuare il login sarà /your_route/?user_credentials=xxxxxx