0

Symfony2 セッションが破棄される前に、sesion_liftime を拡張しようとしています。

数秒でログアウトされることをユーザーに示しています。ユーザーがセッションの延長を確認したら、セッションを延長するコントローラーに ajax リクエストを送信します。しかし問題は、リクエストが機能していないことです。

私はいくつかの異なる解決策を試しましたが、どれもうまくいきませんでした。

<script type="text/javascript">
             var timeoutID;

            function delayedAlert() {
              timeoutID = window.setTimeout(slowAlert, 15000);
            }

            function slowAlert() {
                setTimeout(logout, 5500)
              var r=confirm("You will be logout in 5 seconds!");
              if (r==true)
              {
                $.ajax({
                    url: 'http://localhost/interactivo/web/app_dev.php/check',
                    xhrFields: {
                        withCredentials: true
                     }
                });
                alert("You wont be logout");
              }
            }

            function logout() {alert("You are logout");};

            delayedAlert();
        </script>


/**
* @Route("/check")
*/
public function indexAction()
{
//        FIRST ATTEMPT
//        $value = 'something from somewhere';
//

//        setcookie("TestCookie", $value);
//        setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */
//        setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);

//        SECOND ATTEMPT
//        header('Content-type: text/html; charset=utf-8');
//        echo 'TEST';

//        THIRD ATTEMPT
        $session = $this->container->get('session');

        $lastUsed = new \DateTime();
        $lastUsed->setTimestamp($session->getMetadataBag()->getLastUsed());

        return $this->render('GLHomeBundle:Default:sesion.html.twig', array( 'entities'=> $lastUsed));
    }

私が間違っていることは何ですか?

4

2 に答える 2

0

それは良い解決策ではないと思いますが (それが機能する場合)、symfony のセッションの Cookie は "PHPSESSID" と呼ばれます。この Cookie の有効期間を必要な時間に設定してみてください。このメソッドを使用して、Drupal と Varnish を介してセッションをクライアントに渡すので、セッションの寿命を延ばすことができると思います。

よろしく、 ピーモ

于 2013-07-29T09:50:49.090 に答える