yii2
쿠키
수색…
비고
쿠키는 HTTP 요청의 일부이므로 컨트롤러에서 요청과 응답을 정확히 처리하는 두 가지 작업을 모두 수행하는 것이 좋습니다.
쿠키 설정
쿠키를 만들려면 브라우저를 만들고 보내기 위해 새로운 \yii\web\Cookie
클래스 인스턴스를 만들고이를 응답 쿠키 컬렉션에 추가해야합니다.
$cookie = new Cookie([ 'name' => 'cookie_monster', 'value' => 'Me want cookie!', 'expire' => time() + 86400 * 365, ]); \Yii::$app->getResponse()->getCookies()->add($cookie);
위에서 우리는 쿠키 클래스 생성자에 매개 변수를 전달합니다. 기본적으로 네이티브 PHP setcookie 함수와 같이 사용됩니다 :
-
name
- 쿠키의 이름. -
value
- 쿠키의 값. 문자열인지 확인하십시오. 브라우저는 일반적으로 쿠키의 바이너리 데이터에 만족하지 않습니다. -
domain
- 쿠키를 설정할 도메인. -
expire
- 쿠키를 자동으로 삭제해야하는 시간을 나타내는 unix 타임 스탬프입니다. -
path
- 쿠키를 사용할 수있는 서버의 경로입니다. -
secure
-true
, HTTPS가 사용되는 경우에만 쿠키가 설정됩니다. -
httpOnly
-true
인 경우 JavaScript를 통해 쿠키를 사용할 수 없습니다.
쿠키 읽기
쿠키를 읽으려면 다음 코드를 사용하십시오.
$value = \Yii::$app->getRequest()->getCookies()->getValue('my_cookie');
참고 : 이 코드는 쿠키 구성 요소를 사용하여 설정 한 읽기 쿠키를 허용합니다 (쿠키는 기본적으로 모든 쿠키에 서명하기 때문에). 따라서 JS 코드를 사용하여 쿠키를 추가 / 업데이트하는 경우 기본적으로이 방법을 사용하여 쿠키를 읽을 수 없습니다.
하위 도메인 용 쿠키
보안상의 이유로 인해 기본적으로 쿠키는 설정된 것과 동일한 도메인에서만 액세스 할 수 있습니다. 예를 들어 example.com
도메인에서 쿠키를 설정 한 경우 도메인 www.example.com
에서 쿠키를 가져올 수 없습니다. 따라서 하위 도메인 (예 : admin.example.com, profile.example.com)을 사용하려면 domain
명시 적으로 설정해야합니다.
$cookie = new Cookie([ 'name' => 'cookie_monster', 'value' => 'Me want cookie everywhere!', 'expire' => time() + 86400 * 365, 'domain' => '.example.com' // <<<=== HERE ]); \Yii::$app->getResponse()->getCookies()->add($cookie);
이제 example.com
모든 하위 도메인에서 쿠키를 읽을 수 있습니다.
교차 하위 도메인 인증 및 ID 쿠키
autologin 또는 "remember me"쿠키의 경우 하위 도메인 쿠키의 경우와 동일한 단점이 적용됩니다. 하지만 이번에는 사용자 구성 요소를 구성하고 identityCookie
배열을 원하는 쿠키 구성으로 설정해야합니다.
애플리케이션 구성 파일을 열고 사용자 구성 요소 구성에 identityCookie
매개 변수를 추가하십시오.
$config = [ // ... 'components' => [ // ... 'user' => [ 'class' => 'yii\web\User', 'identityClass' => 'app\models\User', 'enableAutoLogin' => true, 'loginUrl' => '/user/login', 'identityCookie' => [ // <---- here! 'name' => '_identity', 'httpOnly' => true, 'domain' => '.example.com', ], ], 'request' => [ 'cookieValidationKey' => 'your_validation_key' ], 'session' => [ 'cookieParams' => [ 'domain' => '.example.com', 'httpOnly' => true, ], ], ], ];
cookieValidationKey
는 모든 하위 도메인에서 동일해야합니다.
모든 하위 도메인에 대해 login
및 logout
작업을 수행하려면 session::cookieParams
등록 정보를 구성하여 samedomain을 user::identityCookie
로 설정해야합니다. 이 동작은 다음 섹션에서 더 잘 설명됩니다.
세션 쿠키 매개 변수
세션 쿠키 매개 변수는 한 하위 도메인에서 다른 하위 도메인으로 이동하는 동안 세션을 유지해야하거나 반대의 경우 /admin
URL 아래에서 백엔드 앱을 호스팅하고 세션을 별도로 처리하려는 경우에 중요합니다.
$config = [ // ... 'components' => [ // ... 'session' => [ 'name' => 'admin_session', 'cookieParams' => [ 'httpOnly' => true, 'path' => '/admin', ], ], ], ];