Maison >Java >javaDidacticiel >Comment résoudre les problèmes courants en utilisant SpringSession dans la version SpringBoot2.x
Exception rencontrée lors de l'initialisation du contexte - annulation de la tentative d'actualisation : org.springframework.beans.factory.BeanCreationException : erreur lors de la création du bean portant le nom 'org.springframework.boot.autoconfigure.session.SessionAutoConfiguration$ServletSessionRepositoryValidator' : L'appel de la méthode init a échoué ; l'exception imbriquée est org.springframework.boot.autoconfigure.session.SessionRepositoryUnavailableException : aucun référentiel de session n'a pu être configuré automatiquement, vérifiez votre configuration (le type de magasin de session est "redis")
Cela est dû à un élément manquant. Dépendance Spring-session-data-redis.
À propos de SpringBoot2. -data-redis est chargé et l'utilisateur doit ajouter les dépendances entre spring-session et redis.
Actuellement, le courant dominant dans l'industrie informatique est de séparer le front-end et le back-end, mais il y aura certainement des problèmes inter-domaines pendant le processus de séparation.
signifie que lorsque le navigateur demande des ressources d'une page Web d'un nom de domaine à un autre nom de domaine, si le nom de domaine, le port ou le protocole sont différents, il s'agit d'un inter-domaine.
Lorsque nous utilisons springboot + shrio +vue pour réaliser des projets de gestion en arrière-plan, nous ne pouvons pas obtenir l'utilisateur actuellement connecté de shiroSession
<!--SpringSession依赖--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> </dependency> <!--SpringSessionRedis依赖--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
Frontend
#使用使用Redis缓存session数据 spring.session.store-type=REDIS #Redis服务器地址 spring.redis.host=127.0.0.1 #Redis服务器端口号 spring.redis.port=6379
Mais cela ne fonctionne toujours pas après l'avoir configuréAprès une journée de Baidu et de dépannage, je suis revenu à Springboot 1.x et là. Il n'y avait pas de problème, j'ai donc décidé de passer à Springboot. La cause de 2.x, eh bien, le meurtrier a été attrapé. Maintenant, je peux prescrire le bon médicament. Je suis allé en ligne pour lire les problèmes liés à la mise à niveau de Springboot vers 2.x. séance de printemps.
Enfin découvert un nouveau monde. Dans la session de printemps 2.x, SameSite est en fait introduit dans Cookie. Sa valeur par défaut est Lax. D'accord, regardons ce que c'est ?
SameSite Cookie est utilisé pour empêcher les attaques CSRF. Il a deux valeurs : Strict, Lax
SameSite = Strict :
signifie mode strict, indiquant que ce cookie n'est en aucun cas possible. cookie tiers ;
SameSite = Lax :
SameSite = Strict:
意为严格模式,表明这个cookie在任何情况下都不可能作为第三方cookie;
SameSite = Lax:
Solution :
Définissez SameSite pour qu'il soit vide@Configuration public class CorsConfig { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.setAllowCredentials(true); // 允许任何域名使用 corsConfiguration.addAllowedOrigin("*"); // 允许任何头 corsConfiguration.addAllowedHeader("*"); // 允许任何方法(post、get等) corsConfiguration.addAllowedMethod("*"); corsConfiguration.setMaxAge(3600L); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 对接口配置跨域设置 source.registerCorsConfiguration("/**", buildConfig()); return new CorsFilter(source); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!