Rumah >Java >javaTutorial >Bagaimana untuk menyelesaikan masalah biasa menggunakan SpringSession dalam versi SpringBoot2.x
Pengecualian ditemui semasa pemulaan konteks - membatalkan percubaan muat semula: org.springframework.beans.factory.BeanCreationException: Ralat semasa membuat bean dengan nama 'org.springframework.boot .session.SessionAutoConfiguration$ServletSessionRepositoryValidator': Seruan bagi kaedah init gagal;
Ini kerana kebergantungan spring-session-data-redis tiada.
Mengenai SpringBoot2 Apabila spring-session-core digunakan, spring-session-data-redis tidak dimuatkan.
Pada masa ini, arus perdana dalam industri IT ialah pemisahan bahagian hadapan dan belakang, tetapi akan ada pasti menjadi masalah merentas domain semasa proses pemisahan.
bermaksud apabila penyemak imbas meminta sumber daripada halaman web satu nama domain kepada nama domain yang lain, jika nama domain, port atau protokol berbeza, ia adalah merentas domain.
Apabila kami menggunakan springboot + shrio +vue untuk projek pengurusan latar belakang, kami tidak boleh mendapatkan pengguna shiroSession yang sedang log masuk
<!--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
Tetapi tetapan tetap tidak berfungsi Selepas sehari Baidu dan menyelesaikan masalah, saya kembali ke springboot 1.x dan tidak ada masalah seperti itu Barulah saya mencari punca peningkatan ke springboot 2.x menangkap pembunuh itu, kini saya boleh mengambil ubat yang betul.
Akhirnya menemui dunia baharu Dalam sesi musim bunga 2.x, SameSite sebenarnya diperkenalkan dalam Cookie. Okay, mari kita lihat apakah ini.
Kuki SameSite digunakan untuk menghalang serangan CSRF Ia mempunyai dua nilai: Strict, Lax
bermaksud mod ketat, menunjukkan bahawa kuki ini boleh digunakan di bawah. sebarang keadaan Tidak mustahil untuk menggunakannya sebagai kuki pihak ketiga; kuki tidak boleh dibawa untuk akses siaran merentas domain (ini Sangat menjengkelkan, antara muka pengesahan kami ialah permintaan POST)SameSite = Strict:
Ringkasan: Permintaan bahagian hadapan pergi ke bahagian belakang, dan sesi berbeza setiap kali, dan setiap kali ia adalah sesi baharu, menyebabkan tiada maklumat pengguna diperoleh
SameSite = Lax:
@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); } }
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah biasa menggunakan SpringSession dalam versi SpringBoot2.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!