Heim >Java >javaLernprogramm >Wie SpringBoot SpringSession integriert, um eine verteilte Anmeldung zu implementieren

Wie SpringBoot SpringSession integriert, um eine verteilte Anmeldung zu implementieren

王林
王林nach vorne
2023-05-10 20:34:04766Durchsuche

Sitzungsfreigabe

Zum Beispiel zwei Domainnamen:

  • aaa.yupi.com

  • bbb.yupi.com

  • Wenn Sie Cookies teilen möchten, können Sie eine höhere Ebene anlegen Public-Domain-Name wie yupi .com

Warum sendet Server A nach der Anmeldung eine Anfrage an Server B und erkennt den Benutzer nicht?

Der Benutzer meldet sich bei A an, sodass die Sitzung (Benutzeranmeldeinformationen) auf A vorhanden ist.

Daher verfügt B bei der Anforderung von B nicht über Benutzerinformationen und erkennt diese daher nicht.

Wie SpringBoot SpringSession integriert, um eine verteilte Anmeldung zu implementieren

Lösung

Gemeinsamer Speicher statt Daten im Speicher eines einzelnen Servers abzulegen

Wie SpringBoot SpringSession integriert, um eine verteilte Anmeldung zu implementieren

SpringBoot integriert SpringSession, um eine verteilte Anmeldung zu implementieren

Redis einführen und Redis bedienen können:

<!-- 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>

Einführung der Integration von Spring-Session und Redis zum automatischen Speichern von Sitzungen in 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>

Ändern Sie die Spring-Session-Speicherkonfiguration spring.session.store-type

Der Standardwert ist „None“, was bedeutet, dass sie auf einem gespeichert wird Einzelserver

Store-Typ: Redis, was Lese- und Schreibsitzungen von Redis bedeutet

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

Effekt:

/**
 * @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,"成功");
 
    }
}

Das obige ist der detaillierte Inhalt vonWie SpringBoot SpringSession integriert, um eine verteilte Anmeldung zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen