Quando si effettua il login a user
(nome modello Devision User
), viene creata una chiave "warden.user.model_name.key"
che nel vostro caso è "warden.user.user.key"
.
Ad esempio:
{ warden.user.user.key => [[1], "$2a$10$KItas1NKsvunK0O5w9ioWu"] }
dove
1
è la id
del utente connesso.
$2a$10$KItas1NKsvunK0O5w9ioWu
alias long-random-string
è la parziale password crittografata di utente con id 1
.
È possibile verificare questo andando su rails console
e l'esecuzione di
User.find(1).encrypted_password
## => "$2a$10$KItas1NKsvunK0O5w9ioWuWp4wbZ4iympYMqVCRmmvTGapktKqdMe"
UPDATE
potrebbe dirmi un po 'di più su questa password crittografata parziale? perché è parziale e non pieno?
per rispondere alla tua domanda di cui sopra nel commento, Devise
memorizza il parziale encrypted_password
nella sessione invocando authenticatable_salt
metodo. Devise
memorizza il numero parziale encrypted_password
in quanto è più affidabile piuttosto che esporre la password cifrata completa nella sessione (anche se è crittografata). Ecco perché i primi 30 caratteri [0,29]
di encrypted_password
vengono estratti e archiviati nella sessione.
# A reliable way to expose the salt regardless of the implementation.
def authenticatable_salt
encrypted_password[0,29] if encrypted_password
end
È possibile visualizzare il codice per authenticatable_salt qui.
dove/quando viene utilizzato? è usato da Devise, o da Rails, o da entrambi?
È usato da Devise
a scopo di autenticazione per verificare se un particolare utente è connesso. Ideale uso caso sarebbe, come una particolare applicazione Rails registra come un utente è collegato al momento è richiesta una nuova pagina Dal momento che le richieste HTTP sono stateless, sarebbe impossibile stabilire che una determinata richiesta provenga effettivamente da quel particolare utente che ha effettuato l'accesso? Questo è il motivo per cui le sessioni sono importanti in quanto consentirebbero all'applicazione di mantenere una traccia dell'utente connesso da una richiesta all'altra fino alla scadenza della sessione.
fonte
2014-05-15 16:30:54
grazie! potresti dirmi qualcosa in più su questa password parziale crittografata? perché è parziale e non pieno? dove/quando viene utilizzato?è usato da Devise, o da Rails, o da entrambi? –
(o sentitevi liberi di indirizzarmi a un posto dove leggere su questo - ma non sono riuscito a trovare un buon spiegatore ovunque) –
@JohnBachir Si prega di leggere la mia risposta aggiornata. Spero che ti aiuti a capire. –