我尝试在X分钟处于非活动状态后注销用户 但是我找不到设置会话到期时间的方法 我使用Doctrine 2作为身份验证服务器/ adpter 我需要帮助。
答案 0 :(得分:2)
首先,您必须注册用户拥有的所有单个会话。用户可以同时使用不同的浏览器登录。对于每个会话,您需要注册用户开始会话的时间。
在一些伪代码中:
use Zend\Session\SessionManager;
public function login($username, $password)
{
// do some checks to perform the login
// now you have a $user available if login is success
// Session holds the session id and a timestamp
$manager = new SessionManager;
$id = $manager->getId();
$session = $this->registerSession($user, $id);
}
然后,您必须检查每个请求当前会话是否不仅可用于php(默认登录代码),而且如果会话仍然有效,则根据您的TTL(生存时间)。因此,假设您使用getAuthenticatedUser()
登录用户,请写下以下内容:
use Zend\Session\SessionManager;
public function getAuthenticatedUser()
{
$manager = new Sessionmanager;
// This is the session id
$id = $manager->getId();
// Now get the $session you registered earlier based on $id
$now = new DateTime;
if ($session->getTTL() > $now) {
return false;
}
// continue and get $user based on $session
}