Dos formas de implementar el proyecto SpringBoot para obtener información del usuario actual de Spring Security en Thymeleaf

El primer método: use el paquete de expansión para obtener información del usuario

Como usar

1. Primero introduzca las dependencias de extensión de Thymeleaf y SpringSecurity:

Mi versión SpringBoot es 2.2.6.RELEASEla versión predeterminada de SpringSecurity, 5.2.2.RELEASE
así que elegí la versión 5 del paquete de dependencia de extensión

<dependency>
	<groupId>org.thymeleaf.extras</groupId>
	<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

También puede elegir el paquete de dependencia de 4 extensiones según su propia situación: thymeleaf-extras-springsecurity4

2. Luego, introduzca restricciones relevantes en la página Thymeleaf:

<html lang="en" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"><!-- Thymeleaf提供的Spring Security标签支持 -->

3. Uso

登录名:<span sec:authentication="name"></span>
角色:<span sec:authentication="principal.authorities"></span>
用户名:<span sec:authentication="principal.username"></span>
密码:<span sec:authentication="principal.password"></span>

Por supuesto que hay otras formas (susurrando bb

El primer método: usar Session para obtener información del usuario

Como solía pensar que Spring Security saltó directamente a la página de éxito sin un método personalizado. Es imposible obtener información del usuario en el método,
y de repente recordé que ya que estaba llamando al método en el Servicio para consultar al usuario, debería estar disponible en la clase de Servicio. Guarde la información del usuario en la sesión y luego obtenga la información de la sesión en la página

Código:

@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);
            ...(省略)
        }
        ...(省略)
    }
}

Ve a la recepción:

用户名:<span th:text="${session.USER_INFO.username}"></span>

184 artículos originales publicados · elogiados 6 · 680,000 visitas

Supongo que te gusta

Origin blog.csdn.net/Piconjo/article/details/105443573
Recomendado
Clasificación