Я изучаю Spring и Spring Security прямо сейчас, и это был чрезвычайно полезный ответ в его деталях и ясности. Собирался немного помешаться, пытаясь выяснить, почему мое поле пароля не сохранялось в БД. Спасибо!

тоящее время я изучаю фреймворк Spring, уделяя основное внимание его модулю безопасности. Я посмотрел несколько руководств в связи с регистрацией и входом в систему. Я видел это общее использованиепреходящий ключевое слово или@Transient аннотация в поле пароля впользователь учебный класс.

Мое фиктивное приложение использует Spring Boot + Spring MVC + Spring Security + MySQL.

я знаю это

в Javaпреходящий Ключевое слово используется для обозначения того, что поле не должно быть сериализовано.

JPA-х@ Переходная аннотация...

... указывает, что свойство илиполе не является постоянным, Он используется для аннотирования свойства или поля класса сущности, сопоставленного суперкласса или встраиваемого класса.

и org.springframework.data.annotation's@ Переходная аннотация ...

Помечает поле как переходное для каркаса отображения. Таким образомсобственность не будет сохранена и не подвергается дальнейшей проверке в рамках картографии.

В моей базе данных MySQL у меня есть схема spring_demo, которая имеет 3 таблицы:

+-----------------------+
| Tables_in_spring_demo |
+-----------------------+
| role                  |
| user                  |
| user_role             |
+-----------------------+

Когда я используюпреходящий ключевое слово в поле пароля в классе User, оно не будет храниться в базе данных MySQL. (пример: test01)

mysql> select * from user;
+----+--------+------------------+----------+
| id | active | email            | username |
+----+--------+------------------+----------+
|  1 |      1 | [email protected] | test01   |
+----+--------+------------------+----------+
1 row in set (0,00 sec)

Когда я используюjavax.persistence @Transient аннотация к полю пароля в классе User, она также не будет храниться в базе данных MySQL. (пример: test02)

Но ... когда я используюorg.springframework.data.annotation @Transient аннотация к полю пароля в классе User, который он хранит в базе данных MySQL. (пример: test03)Это почему?

mysql> select * from user;
+----+--------+------------------+----------+--------------------------------------------------------------+
| id | active | email            | username | password                                                     |
+----+--------+------------------+----------+--------------------------------------------------------------+
|  1 |      1 | [email protected] | test02   |                                                              |
|  2 |      1 | [email protected] | test03   | $2aпреходящийUbvmdhfcKxSNr/I4CjOLtOkKGX/j4/xQfFrv3FizxwEVk6D9sAoO  |
+----+--------+------------------+----------+--------------------------------------------------------------+
2 rows in set (0,00 sec)

Мои основные вопросы: когда я использую аннотацию @Transient на основе spring.data, поле пароля сохраняется. Зачем? И почему я должен использовать аннотацию @Transient в поле пароля?

Спасибо за ваше руководство и помощь заранее!

Ответы на вопрос(1)

Ваш ответ на вопрос