Первый 一
способ: использовать пакет расширения для получения информации о пользователе
Как использовать
1. Сначала представьте зависимости расширения Thymeleaf и SpringSecurity:
Моя версия SpringBoot является 2.2.6.RELEASE
версией SpringSecurity по умолчанию, 5.2.2.RELEASE
поэтому я выбрал 5-ю версию пакета зависимостей расширения
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
Вы также можете выбрать 4 пакета зависимостей расширений в зависимости от вашей ситуации: thymeleaf-extras-springsecurity4
2. Затем введите соответствующие ограничения на странице Thymeleaf:
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"><!-- Thymeleaf提供的Spring Security标签支持 -->
3. Используйте
登录名:<span sec:authentication="name"></span>
角色:<span sec:authentication="principal.authorities"></span>
用户名:<span sec:authentication="principal.username"></span>
密码:<span sec:authentication="principal.password"></span>
Конечно есть и другие способы (шепотом Б.Б.
Первый 二
способ: использовать Session для получения информации о пользователе
Поскольку раньше я думал, что Spring Security напрямую переходил на страницу успеха без специального метода. Я не мог получить информацию о пользователе в методе,
а потом вдруг вспомнил, что, поскольку я вызывал метод в Service для запроса пользователя, он должен быть в классе Service. Сохраните информацию о пользователе в сеансе, а затем получите информацию в сеансе на странице
Код:
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserRepository userRepository;
@Autowired
HttpSession session;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.findByUsername(username);
if (user!=null)
{
session.setAttribute("USER_INFO",user);
...(省略)
}
...(省略)
}
}
Получить на стойке регистрации:
用户名:<span th:text="${session.USER_INFO.username}"></span>