Código fuente de configuración de Springcloud
Sin embargo, en SpringCloud, cada microservicio expone directamente la interfaz tranquila. ¿Cómo obtiene cada microservicio la información actual del usuario en este momento? La mejor manera son las fichas. El token se puede utilizar como identificador de sesión entre BS (generalmente un token aleatorio nativo) o se puede utilizar como portador de información para entregar información personalizada (jwt, es decir, token web Json).
Para comprender este artículo con mayor claridad, debemos comprender algo sobre spring-security-oauth y jwt. Este artículo sólo se centra en la transferencia de información del usuario.
Adaptador de configuración del servidor de autorización de configuración del servidor de autenticación
Convertidor de token personalizado
CustomJwtAccessTokenConverter
En este momento, acceda al servidor de autorización de forma fija. formato La interfaz del token obtiene el token. Como se muestra en la figura, se puede obtener el token en formato jwt y se agrega información adicional nick_name.
La siguiente información, es decir, el nombre de usuario y la información de autorización, se pueden obtener analizando directamente la cadena jwt.
Solo necesita especificar exactamente el mismo almacén de tokens y convertidor de tokens que el servidor de autorización.
En el filtro de seguridad, el filtro de procesamiento de autenticación OAuth 2 obtendrá información relevante del token para la autenticación.
Código fuente:
Tenga en cuenta que el servidor de recursos se configura principalmente en
Adaptador de configuración del servidor de recursos
El microservicio obtiene el usuario en información jwttoken. Hay dos formas de obtener el nombre de usuario actual y los permisos directamente utilizando el contexto de seguridad; la otra forma es personalizar el interceptor para obtener información adicional.
Esto es muy simple: obtenga el encabezado para analizar el token de verificación.
Luego obtenga la información adicional del nick_name previamente agregado del servidor de autorización y colóquelo en la variable del hilo.
La clase de contexto de usuario
inicia el interceptor para registrar la clase de configuración webmvc.
Obtenga información del usuario en el controlador como se muestra en la siguiente figura.
Como se muestra en la figura de la excepción de autenticación predeterminada.
Supongamos que hacemos un manejo global de excepciones y el front-end quiere realizar un salto de inicio de sesión unificado cuando el token caduca. ¿Cómo hacerlo?
Simplemente implemente la interfaz AuthenticationEntryPoint y anule el método de inicio.
Tenga en cuenta que @RestControllerAdvice no está obligado a lanzar una excepción directamente, porque la respuesta aquí se devuelve directamente y el controlador no la procesa.
En este punto, devuelvo mi objeto de respuesta personalizado como se muestra.