0
인증 및 대부분의 읽기/업데이트 요청을 포함하여 외부 API를 통해 대부분의 작업을 수행하는 Yii2 응용 프로그램이 있습니다.Yii2에서 세션 재생성 사용 안 함
로그인 후 세션에 암호화 된 값을 저장하고 암호화 키를 쿠키에 저장합니다.
쿠키 (또는 세션?)는 30 분 이상 사용하지 않으면 만료됩니다.하지만 세션은 자동으로 재생성되며 (사용자는 로그인하라는 메시지가 표시되지 않습니다), 이지만 값 검색은 다음과 같습니다. 부서진.
주요 문제는 재현하기 어렵다는 것입니다 (일반적으로 밤에 페이지가 열리면 발생합니다).
가 나는 설정 모두 나에게을 기억하고 쿠키 0 시간 만료하지만 해결해야 할 더 많은 옵션이있는 것 같습니다있다.
다음은 세션의 데이터를 저장/검색하는 함수입니다.
public static function storeData($stored_data)
{
$security = Yii::$app->getSecurity();
$key = $security->generateRandomKey();
$encrypted = $security->encryptByKey($stored_data, $key);
Yii::$app->getSession()->set('stored_data', $encrypted);
Yii::$app->response->cookies->add(new Cookie([
'name' => 'key',
'value' => $key,
//'expire' => time() + 60*60*24*30,
]));
}
private static function getData()
{
$security = Yii::$app->getSecurity();
$encrypted = Yii::$app->getSession()->get('stored_data');
$key = Yii::$app->request->cookies->get('key');
$stored_data= $security->decryptByKey($encrypted, $key);
return $stored_data;
}
코드는 혼합처럼 보인다 Yii1 및 Yii2 코드. 질문은 Yii2에 관한 것입니다. – arogachev
내가 공유 한 링크를 따라 보셨습니까? Yii 2 전용 –
죄송합니다. 귀하의 답변에서 약간 분명하지 않습니다. – arogachev