使用现有的会话存储数据来允许或拒绝其他

时间:2019-08-31 13:17:28

标签: symfony4

我要测试是否已设置用户会话以允许他访问其数据

我尝试过这样:

if(empty($request->getSession()->get($currentUserConnect[0]->getId())))

但是它不使用var/sessions/dev中的现有会话数据,我不知道如何从该文件夹访问数据,然后测试会话是否已经存在。

if(empty($request->getSession()->get($currentUserConnect[0]->getId()))){
$sessionStorage = new NativeSessionStorage();
$sessionStorage->setOptions(['cookie_lifetime' =>30]);
  $currentSession = $request->getSession($sessionStorage);

 $currentSession->set($currentUserConnect[0]->getId() , $currentUserConnect[0]->getUsername() );
}

我希望我的API返回带有起始时间戳(已设置会话的时刻)+我为会话持续时间提供的以秒为单位的时间的会话数据,以使最终结果简单如下:

if(empty($request->getSession()->get($currentUserConnect[0]->getId())))
{
$sessionStorage = new NativeSessionStorage();
$sessionStorage->setOptions(['cookie_lifetime' =>$session->getMetadataBag()->getCreated()+ 3600]);
$currentSession = $request->getSession($sessionStorage);

$currentSession->set($currentUserConnect[0]->getId() , $currentUserConnect[0]->getUsername() );
}

我将创建带有会话持续时间的时间戳,并且我将在每次连接尝试时测试该时间戳是否大于或等于当前时间戳,如果不是,则表示会话已过期,用户必须重新连接。

>

我正在使用它来存储会话的生命周期,但是它返回0都不起作用:

 $session_lifetime = $currentSession->getMetadataBag()->getLifetime();

我需要测试是否已设置会话,以避免在用户会话尚未到期时设置多个会话文件,因此在登录时,用户将使用currentSession而不是新会话,因此我需要发送至还没有会话的用户可以创建一个会话,并将该会话的数据发送到前端,该会话将保留该数据并将其用于每个axios请求,以允许访问API上的用户数据。

如果我错过了一些东西,请告诉我,我对Symfony和PHP还是陌生的!

0 个答案:

没有答案