Maison > Java > javaDidacticiel > Comment SpringBoot intègre SpringSession pour implémenter la connexion distribuée

Comment SpringBoot intègre SpringSession pour implémenter la connexion distribuée

王林
Libérer: 2023-05-10 20:34:04
avant
801 Les gens l'ont consulté

Partage de session

Par exemple, deux noms de domaine :

  • aaa.yupi.com

  • bbb.yupi.com

  • Si vous souhaitez partager des cookies, vous pouvez planter un niveau supérieur nom de domaine public, tel que yupi .com

Pourquoi le serveur A envoie-t-il une requête au serveur B après la connexion et ne reconnaît-il pas l'utilisateur ?

L'utilisateur se connecte en A, donc la session (informations de connexion de l'utilisateur) existe sur A

Par conséquent, lors de la demande de B, B n'a pas d'informations utilisateur, il ne le reconnaît donc pas.

Comment SpringBoot intègre SpringSession pour implémenter la connexion distribuée

Solution

Stockage partagé au lieu de mettre les données dans la mémoire d'un seul serveur

Comment SpringBoot intègre SpringSession pour implémenter la connexion distribuée

SpringBoot intègre SpringSession pour implémenter la connexion distribuée

Présentation de Redis et possibilité de faire fonctionner 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>
Copier après la connexion

Présentation de l'intégration de spring-session et redis pour stocker automatiquement les sessions dans 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>
Copier après la connexion

Modifier la configuration de stockage spring-session spring.session.store-type

La valeur par défaut est none, ce qui signifie qu'elle est stockée sur un serveur unique

store-type : redis, ce qui signifie des sessions de lecture et d'écriture depuis redis

  redis:
    host: localhost
    port: 6379
  session:
    timeout: 60
    store-type: redis
Copier après la connexion

Effet :

/**
 * @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,"成功");
 
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal