Два способа реализации проекта SpringBoot для получения информации о текущем пользователе Spring Security в Thymeleaf

Первый способ: использовать пакет расширения для получения информации о пользователе

Как использовать

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>

Опубликовано 184 оригинальных статей · Оценено 6 · 680 000 просмотров

рекомендация

отblog.csdn.net/Piconjo/article/details/105443573