Po zalogowaniu się na user
(nazwa modelu rozwojowego User
) zostanie utworzony klucz "warden.user.model_name.key"
, który w Twoim przypadku to "warden.user.user.key"
.
Na przykład
{ warden.user.user.key => [[1], "$2a$10$KItas1NKsvunK0O5w9ioWu"] }
gdzie
1
jest id
z rejestrowane użytkownika.
$2a$10$KItas1NKsvunK0O5w9ioWu
aka long-random-string
jest częściowy zaszyfrowane hasło użytkownika o identyfikatorze 1
.
Można to sprawdzić wchodząc na rails console
i realizacji
User.find(1).encrypted_password
## => "$2a$10$KItas1NKsvunK0O5w9ioWuWp4wbZ4iympYMqVCRmmvTGapktKqdMe"
UPDATE
mógłbyś mi powiedzieć nieco więcej o tej częściowej zaszyfrowanego hasła? dlaczego jest częściowy i niepełny?
Aby odpowiedzieć na powyższe pytanie w komentarzu, Devise
przechowuje częściowe encrypted_password
w sesji powołując authenticatable_salt
metody. Devise
przechowuje częściową encrypted_password
, ponieważ jest bardziej niezawodny niż ekspozycja pełnego zaszyfrowanego hasła w sesji (nawet jeśli jest zaszyfrowana). Z tego powodu pierwsze 30 znaków [0,29]
z jest wyodrębniane i przechowywane w sesji.
# A reliable way to expose the salt regardless of the implementation.
def authenticatable_salt
encrypted_password[0,29] if encrypted_password
end
Można zobaczyć kod authenticatable_salt tutaj.
gdzie/kiedy jest używany? jest używany przez Devise, lub przez Rails, lub oba?
Jest on używany przez Devise
dla celów uwierzytelniania w celu sprawdzenia, czy dany użytkownik jest zalogowany. Idealny use-case byłoby, jak dana aplikacja Rails śledzi jaki użytkownik jest zalogowany, gdy żądana jest nowa strona. Ponieważ żądania HTTP są bezpaństwowcami, niemożliwe byłoby stwierdzenie, że dane żądanie rzeczywiście pochodzi od konkretnego użytkownika, który jest zalogowany? Właśnie dlatego sesje są ważne, ponieważ umożliwiają aplikacji śledzenie zalogowanego użytkownika od jednego żądania do drugiego aż do zakończenia sesji.
dziękuję! czy mógłbyś mi powiedzieć coś więcej na temat tego częściowo zaszyfrowanego hasła? dlaczego jest częściowy i niepełny? gdzie/kiedy jest używany?jest używany przez Devise, lub przez Rails, lub oba? –
(lub zachęcamy do skierowania mnie gdzieś, aby przeczytać o tym - ale nie mogłem znaleźć dobrego wyjaśniającego nigdzie) –
@JohnBachir Proszę przeczytać moją zaktualizowaną odpowiedź. Mam nadzieję, że pomaga ci to zrozumieć. –