Interfaz: "Algunos problemas cuando vue accede a la interfaz de fondo

Ésta es la situación.

La interfaz de back-end springboot se administra con permisos de shiro. Quiero recordar la contraseña e iniciar sesión automáticamente dentro de las 24 horas posteriores al inicio de sesión. Shiro proporciona el administrador de contraseñas recordadas de RememberMe para ayudarnos a realizar el inicio de sesión automático.

Déjame hablar primero del primer pozo. Dominio cruzado, esto no es nada que decir, este no es un pozo especial, simplemente siga la configuración a continuación.

import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CustomCORSConfiguration {
    private CorsConfiguration buildConfig(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*"); // 允许任何的head头部
        corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
        corsConfiguration.addAllowedMethod("*"); // 允许任何的请求方法
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

    // 添加CorsFilter拦截器,对任意的请求使用
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }

}

Además del primer pozo, este es un pozo enorme. Solicitud para llevar cookies

Inyecté CookieRememberMeManager en ShiroConfig para recordar el administrador de contraseñas. En este proceso, el administrador de contraseñas recordar creará una cookie llamada RememberMe, y configuré la edad máxima de esta cookie en un día, y al mismo tiempo inicié sesión en el nuevo UsernamePasswordToken (username, contraseña, verdadero), cambie el tercer parámetro que es si iniciar sesión automáticamente en verdadero. De acuerdo con la urgencia de usar layui en el pasado, después de iniciar sesión, el sistema creará dos parámetros en la interfaz, uno se llama JSESSIONID y el otro se llama RememberMe. como sigue:

 Pero después de iniciar sesión con éxito en mi interfaz de inicio de sesión vue,

Ocurrieron los siguientes problemas:

1: estos dos parámetros no están en la cookie.

2: Al mismo tiempo, al realizar la autenticación de autorización, el sistema solo utiliza la interfaz de autenticación de inicio de sesión de ShiroRealm, no la interfaz de autenticación de autorización. WTF? (Demasiado enojado para descubrir la razón después de buscar durante mucho tiempo)

3: Abra la red del modo de depuración del desarrollador de Google y descubra que no hay ninguna cookie en la solicitud (este es el punto más terrible).

Entonces, cuál es la razón.

La solicitud de Axios no incluye cookies de forma predeterminada. Necesito encenderlo manualmente. Simplemente establezca el atributo con Credenciales igual a verdadero. Un atributo resuelve tres problemas. como sigue

(Además, en la imagen, axios interceptó el encabezado de la solicitud y configuró un encabezado llamado Autorización, que no tiene nada que ver con shiro. Así es como configuré la verificación de interceptación de tokens en swagger, que parece explicarse en el swagger anterior- blog relacionado) 


Hablemos del tercer pozo. Transferir datos en formato x-www-form-urlencoded

En la imagen de arriba, configuré content-type: 'application / json' en el interceptor.

Pero en realidad no jugó un papel. Después de eliminar el tipo de contenido en este interceptor, la solicitud todavía está en el formato json predeterminado.

Por supuesto, la gran mayoría de las solicitudes están en formato json y no hay ningún problema, pero tengo un backend de la interfaz de publicación con parámetros vinculados por la anotación @ModelAttribute. El formato json predeterminado no me permite obtener este parámetro. En este momento, necesito cambiar el formato de la solicitud a application / x-www-form-urlencoded.

Pero cómo cambiarlo es envolver el producto de objeto de parámetro que originalmente se iba a pasar al fondo en los datos con el nuevo URLSearchParams (producto).

 

 

 

Supongo que te gusta

Origin blog.csdn.net/nienianzhi1744/article/details/103508966
Recomendado
Clasificación