0

Zend Framework 2、ZfcUser、および BjyAuthorize を使用しています。ログインとアクセス制御は機能しますが、特定の状況下でユーザーがログアウトされます: 現在のページで AJAX 呼び出しがまだ実行されている間に別のページに移動しようとすると。

Chrome の [ネットワーク] ウィンドウでは、AJAX 呼び出しがキャンセルされたものとして表示され、その後に移動しようとしたページへの呼び出しが続きます。次のコードは、ログインしているかどうかを確認し、ログインしていないことを検出し ( $auth->hasIdentity()false を返します)、送信しますログインページに移動します。

$sm = $event->getApplication()->getServiceManager();
$auth = $sm->get('zfcuser_auth_service');
$routeParams = $event->getRouteMatch()->getParams();

// List of action non-authenticated users may access
$whitelist = array('login' => 1, 'register' => 1, 'forgotPassword' => 1, 'resetPassword' => 1);

$hasIdentity = $auth->hasIdentity();

if (!$hasIdentity && !array_key_exists($routeParams['action'], $whitelist) ) {
    $targetUrl = $event->getRouter()->assemble(array(), array('name' => 'zfcuser/login', 'absolute' => true));
    $response = $event->getResponse();
    $response->getHeaders()->addHeaderLine('Location', $targetUrl);
    $response->setStatusCode(302);
    $response->sendHeaders();
}

どうやらセッションが消えただけですか?どのように/どこに保存されているかわかりません。ZfcUser\Authentication\Storage\Db が使用されていますが、それは Storage\Session をストレージとして使用しており、現在、それがどのクラスなのかわかりません。

以前にそのようなことに遭遇した人はいますか、またはどこで確認すべきか提案がありますか?

4

0 に答える 0