Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente de configuración de Springcloud

Código fuente de configuración de Springcloud

En el proyecto dubbo zookeeper original, el módulo web solo exponía la interfaz Restful y cada módulo de servicio solo exponía la interfaz duboo. En este momento, después de que el usuario inicia sesión, el proyecto web autentica y verifica el token, y la ID de la sesión se pasa al módulo de servicio dubbo mediante el paso de parámetros implícitos de dubbo. Luego, el interceptor obtiene la información del usuario de Redis en función del ID de sesión y la establece en el hilo actual.

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.