Obecnie uczę się struktury Spring, głównie koncentrując się na jej module bezpieczeństwa. Oglądałem kilka poradników związanych z rejestracją i logowaniem. Widziałem to powszechne użycie słowa kluczowego transient lub @Transient w polu hasła w klasie User.@Adransient adnotation, @ org.springframework.data.annotation.Advertient adnotacja, tymczasowe przechowywanie słów kluczowych i haseł
Moja fikcyjna aplikacja używa Spring Boot + Spring MVC + Spring Security + MySQL.
wiem, że przemijający kluczowe
Javy jest używany do określenia, że pole nie może być w odcinkach.
WZP @Transient adnotacja ...
... określa, że nieruchomość lub pole nie jest trwała. Służy do adnotowania właściwości lub pola klasy encji, mapowanej superklasy lub klasy embedable.
a org.springframework.data.annotation za @Transient adnotacja ...
Zaznacza pole jako przejściowe dla struktury mapowania. W związku z tym właściwość nie będzie zachowywana w postaci i nie będzie dalej sprawdzana przez strukturę mapowania.
W moim db MySQL mam schematu spring_demo który ma 3 tabele:
+-----------------------+
| Tables_in_spring_demo |
+-----------------------+
| role |
| user |
| user_role |
+-----------------------+
Kiedy używam przemijające słowa kluczowego w polu hasła int klasy User, nie byłoby przechowywane w bazie danych MySQL. (Przykład: test01 pasuje)
mysql> select * from user;
+----+--------+------------------+----------+
| id | active | email | username |
+----+--------+------------------+----------+
| 1 | 1 | [email protected] | test01 |
+----+--------+------------------+----------+
1 row in set (0,00 sec)
Kiedy używam javax.persistence @Transient adnotacji w polu hasło w klasie użytkownika, to też by nie być przechowywane w db MySQL. (Przykład: test02)
... Ale gdy używam org.springframework.data.annotation @Transient adnotacji w polu hasło w klasie User to nie przechowywanej w db MySQL. (przykład: test03) Dlaczego tak jest?
mysql> select * from user;
+----+--------+------------------+----------+--------------------------------------------------------------+
| id | active | email | username | password |
+----+--------+------------------+----------+--------------------------------------------------------------+
| 1 | 1 | [email protected] | test02 | |
| 2 | 1 | [email protected] | test03 | $2a$10$UbvmdhfcKxSNr/I4CjOLtOkKGX/j4/xQfFrv3FizxwEVk6D9sAoO |
+----+--------+------------------+----------+--------------------------------------------------------------+
2 rows in set (0,00 sec)
Moje główne pytania, kiedy używam spring.data oparciu @Transient adnotacji pole hasło przetrwała. Czemu? I dlaczego powinienem używać adnotacji @Transient na polu hasła?
Dziękujemy za wskazówki i pomoc z góry!
Jeśli celem nie jest ignorowanie tego pola podczas zapisywania, można użyć @Tran sient prywatne hasło przejściowe Hasło; –
Obecnie uczę się Spring and Spring Security, a to była niezwykle przydatna odpowiedź w szczegółach i jasności. Trochę szaleje, próbując dowiedzieć się, dlaczego moje pole hasła nie utrzymało się w bazie danych. Dziękuję Ci! – justinraczak