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

Wie SpringBoot SpringSession integriert, um eine verteilte Anmeldung zu implementieren

王林
Freigeben: 2023-05-10 20:34:04
nach vorne
781 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Ä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
Nach dem Login kopieren

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,"成功");
 
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage