세션이란
HTTP는 스테이트리스한 프로토콜입니다. 즉, 요청 사이에 사용자의 정보를 유지하는 구조가 HTTP 자체에는 없습니다. Laravel의 세션 기능은 여러 요청에 걸쳐 사용자의 데이터를 유지하는 수단을 제공합니다. 로그인 상태, 카트 내 상품, 폼 입력 중 데이터 등 요청 사이에 유지하고 싶은 정보를 세션에 저장합니다.세션 드라이버 설정
세션 설정은config/session.php에 작성되어 있습니다.
SESSION_DRIVER 환경 변수(.env 파일)로 드라이버를 전환할 수 있습니다.
Laravel의 기본 프로젝트에서는
database 드라이버가 설정되어 있습니다. database 드라이버를 사용하는 경우 sessions 테이블이 필요하지만, 기본 마이그레이션에 포함되어 있으므로 그대로 사용할 수 있습니다.세션 접근 방법
세션에 접근하려면Request 인스턴스의 메서드를 사용하는 방법과 글로벌 헬퍼 session()을 사용하는 방법 두 가지가 있습니다.
Request 인스턴스를 사용하는 방법
컨트롤러의 메서드에Request를 타입 힌트로 받고, $request->session()으로 세션에 접근합니다.
글로벌 헬퍼 session()을 사용하는 방법
session() 헬퍼 함수는 컨트롤러나 뷰 등 어디서든 호출할 수 있습니다.
세션 조작
데이터 가져오기
데이터 존재 체크
has와 exists의 차이에 주의해 주세요.
데이터 저장
데이터 삭제
플래시 데이터
플래시 데이터는 다음 요청에서만 유효한 세션 데이터입니다. 폼 전송 완료 메시지나 오류 메시지 등 한 번만 표시하고 싶은 정보에 사용합니다.flash()로 데이터 저장
플래시 데이터 연장
Blade에서 플래시 메시지 표시
실용 예시: 폼 전송 후의 메시지 표시
폼을 전송한 후 성공 메시지를 세션에 저장해 리다이렉트하고, 다음 페이지에서 표시하는 것은 웹 앱의 정석 패턴입니다.1
라우트 정의
2
컨트롤러 구현
폼 전송을 받는
store 메서드에서 저장 후 성공 메시지를 붙여 리다이렉트합니다.redirect()->with('success', '...')는 리다이렉트 대상으로 플래시 데이터를 전달하는 단축 구문입니다.3
레이아웃에서 메시지 표시
resources/views/layouts/app.blade.php에 플래시 메시지의 표시 부분을 추가합니다.4
목록 페이지의 뷰를 생성
유효성 검증 오류와 조합한 패턴
유효성 검증 실패 시에는back()->withErrors()와 조합해 사용합니다.
Laravel은 유효성 검증 실패 시 자동으로 오류를 플래시 데이터로 유지하므로 Blade에서 $errors 변수를 사용할 수 있습니다.
다음 단계
유효성 검증
폼의 입력 데이터를 유효성 검증으로 검사하는 방법을 확인합니다.