>  기사  >  Java  >  SpringBoot가 SpringSession을 통합하여 분산 로그인을 구현하는 방법

SpringBoot가 SpringSession을 통합하여 분산 로그인을 구현하는 방법

王林
王林앞으로
2023-05-10 20:34:04690검색

세션 공유

예를 들어 두 개의 도메인 이름:

  • aaa.yupi.com

  • bbb.yupi.com

  • 쿠키를 공유하려면 더 높은 수준의 도메인을 심을 수 있습니다. yupi.com

서버 A가 로그인 후 서버 B에 요청을 보내고 사용자를 인식하지 못하는 이유는 무엇입니까?

사용자가 A에 로그인했으므로 A에 세션(사용자 로그인 정보)이 존재합니다

결과적으로 B를 요청하면 B는 사용자 정보가 없어 인식하지 못합니다.

SpringBoot가 SpringSession을 통합하여 분산 로그인을 구현하는 방법

솔루션

단일 서버의 메모리에 데이터를 저장하는 대신 공유 저장소

SpringBoot가 SpringSession을 통합하여 분산 로그인을 구현하는 방법

SpringBoot는 SpringSession을 통합하여 분산 로그인을 구현합니다.

redis 소개 및 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>

Redis에 세션을 자동으로 저장하기 위한 spring-session과 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>

spring-session 저장소 구성 수정 spring.session.store-type

기본값은 없음입니다. 단일 서버

store-type: redis, 이는 redis

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

효과:

/**
 * @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,"成功");
 
    }
}
에서 세션 읽기 및 쓰기를 의미합니다.

위 내용은 SpringBoot가 SpringSession을 통합하여 분산 로그인을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제