Rumah  >  Artikel  >  Java  >  Bagaimana SpringBoot menyepadukan SpringSession untuk melaksanakan log masuk teragih

Bagaimana SpringBoot menyepadukan SpringSession untuk melaksanakan log masuk teragih

王林
王林ke hadapan
2023-05-10 20:34:04727semak imbas

Perkongsian sesi

Sebagai contoh, dua nama domain:

  • aaa.yupi.com

  • bbb.yupi.com

  • Jika anda ingin berkongsi kuki, anda boleh menanam nama domain awam peringkat lebih tinggi, seperti yupi.com

Mengapa pelayan Selepas A log masuk, permintaan dihantar ke pelayan B. Adakah pengguna tidak mengenalinya?

Pengguna log masuk di A, jadi sesi (maklumat log masuk pengguna) wujud pada A.

Akibatnya, apabila meminta B, B tidak mempunyai maklumat pengguna, jadi ia tidak mengenali ia.

Bagaimana SpringBoot menyepadukan SpringSession untuk melaksanakan log masuk teragih

Penyelesaian

Storan kongsi dan bukannya meletakkan data dalam ingatan pelayan tunggal

Bagaimana SpringBoot menyepadukan SpringSession untuk melaksanakan log masuk teragih

SpringBoot menyepadukan SpringSession untuk melaksanakan log masuk teragih

Memperkenalkan redis untuk mengendalikan redis:

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.6.4</version>
</dependency>

Memperkenalkan penyepaduan sesi spring dan redis untuk membolehkan Simpan sesi automatik dalam redis:

<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>2.6.3</version>
</dependency>

Ubah suai konfigurasi storan spring.session.store-type

Lalainya ialah tiada, yang bermaksud ia disimpan dalam satu Pelayan

jenis kedai: redis, menunjukkan sesi membaca dan menulis daripada redis

  redis:
    host: localhost
    port: 6379
  session:
    timeout: 60
    store-type: redis

Kesan:

/**
 * @author 刘宇浩
 */
@RestController
@RequestMapping("/session")
public class SessionController {

    public static final String key = "USERLOGINSTATE";

    @GetMapping("/set")
    public Result setSession(HttpServletRequest request) {
        User user = new User();
        user.setClassName("21软件3");
        user.setName("lyl");
        request.getSession().setAttribute(key, user);
        return ResultGenerator.genSuccessResult(200, "成功");
    }
    @GetMapping("/get")
    public Result getSession(HttpServletRequest request){
        User userloginstate = (User)request.getSession().getAttribute(key);
        System.out.println(userloginstate.getName());
        System.out.println(userloginstate.getClassName());
        return ResultGenerator.genSuccessResult(200,"成功");
 
    }
}

Atas ialah kandungan terperinci Bagaimana SpringBoot menyepadukan SpringSession untuk melaksanakan log masuk teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam