












너가 말하는 것이 정확합니다:전통적인 웹 프로젝트에서는 세션/Cookie를 사용하지만, 프론트엔드와 백엔드가 분리된 인터페이스 프로젝트(RESTful API)에서는 반드시 JWT를 사용해야 합니다 이 핵심 이유는아키텍처가 변화했기 때문입니다— 전통적으로는서버가 페이지를 렌더링했습니다하지만 지금은프론트엔드가 독립적이고 인터페이스는 상태가 없습니다.
나는 가장 일반적이고 핵심적인 방식으로, 두 가지의 차이점을 명확하게 설명하겠습니다:
SessionID 쿠키에 존재 정보를 포함하여 반환
따라서:인터페이스 인증은 서버 측 상태 저장 방식을 버려야 합니다 → JWT가 등장합니다
JWT = JSON Web Token
한마디로 말하면: 사용자 식별 정보를 암호화하여 문자열로 만들어 클라이언트에 저장하고, 서버는 로그인 상태를 저장하지 않습니다。
작업 흐름:
표
| 비교 차원 | 세션 / 쿠키 | JWT |
|---|---|---|
| 저장 위치 | 서버 측 저장, 클라이언트는 ID만 저장 | 모두 클라이언트에 존재 서버는 저장하지 않음 |
| 상태 | 상태적(서버는 세션을 조회해야 함) | 상태 없음(Stateless, 인터페이스는 자연스럽게 분산 지원) |
| 교차 도메인 / 교차 단말기 | 부족(Cookie에 의존, 교차 도메인 제한 큼) | 매우 뛰어남(Web, 웹소켓, 앱, 제3자 인터페이스 지원) |
| 분산 배포 | 복잡(세션 공유 필요) | 극히 간단(여러 서버가 동일한 키로 검증) |
| 요청 방식 | 브라우저가 자동으로 Cookie를 포함 | 프론트엔드수동 전송(요청 헤더 / 파라미터) |
| 보안 특징 | CSRF 공격에 취약 | CSRF 위험 없음 |
| 적용 시나리오 | 傳統 웹사이트、서버 측 렌더링 | 프론트엔드와 백엔드 분리、RESTful API、미들웨어 서비스 |
간단히 기억해두세요:
웹사이트는 Session을 사용하고, 인터페이스는 JWT를 사용하세요; 상태가 있으면 Session을 사용하고, 상태가 없으면 JWT를 사용하세요.
<!-- JWT 工具:jjwt,Spring5 兼容 -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
이 콘텐츠는 인셔셔RSS(RSS 리더)가 자동으로 집계한 것으로 읽기 참고용입니다. 원문 출처 — 저작권은 원저작자에게 있습니다.