revert(middleware): SessionMiddleware.php

This commit is contained in:
李东云
2023-07-06 16:42:22 +08:00
parent b89f0c99b6
commit 8b2a023df3

View File

@@ -22,7 +22,7 @@ use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
/**
* Singularity\HDK\Auth\Middleware\SessionMiddleware@HDK-Core
* Singularity\HDK\Core\Middleware\SessionMiddleware@HDK-Core
*
* @author 李东云 <Dongyun.Li@LuxCreo.Ai>
* Powered by PhpStorm
@@ -52,25 +52,7 @@ class SessionMiddleware implements MiddlewareInterface
$response = $handler->handle($request);
} finally {
$this->storeCurrentUrl($request, $session);
$session = $this->sessionManager->getSession();
/*
* 现在的机制,但凡写入 Redis 的数据,
* 过期时间就是固定的 gc_maxlifetime
*
* 而 RedisHandler 只会被依赖注入时加载一次,
* 后续无法临时修改 gc_maxlifetime
*
* 又因为现在没有其他情况用到 session
* 只有登录之后才会记下用户信息
*
* 所以一个妥协的方案,就是只有登录了再写入 Redis
*
* (除非重写整套 RedisHandler/RedisHandlerFactory/...
*/
if ($this->auth($session)) {
$this->sessionManager->end($session);
}
$this->sessionManager->end($session);
}
return $this->addCookieToResponse($request, $response, $session);
@@ -102,7 +84,7 @@ class SessionMiddleware implements MiddlewareInterface
$cookie = new Cookie(
name: $session->getName(),
value: $session->getId(),
expire: $this->getCookieExpirationDate($session),
expire: $this->getCookieExpirationDate(),
path: $this->config->get('session.options.path', '/'),
domain: $this->config->get('session.options.domain', $request->getUri()->getHost()),
secure: $this->config->get(
@@ -133,10 +115,9 @@ class SessionMiddleware implements MiddlewareInterface
/**
* Get the session lifetime in seconds.
*/
private function getCookieExpirationDate(SessionInterface $session): int
private function getCookieExpirationDate(): int
{
// if ($this->config->get('session.options.expire_on_close')) {
if (!$this->auth($session)) {
if ($this->config->get('session.options.expire_on_close')) {
$expirationDate = 0;
} else {
$expireSeconds = $this->config->get('session.options.cookie_lifetime', 5 * 60 * 60);
@@ -153,8 +134,4 @@ class SessionMiddleware implements MiddlewareInterface
return rtrim(preg_replace('/\?.*/', '', (string)$request->getUri()));
}
private function auth(SessionInterface $session)
{
return $session->has('userInfo');
}
}
}