| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- // +----------------------------------------------------------------------
- // | ThinkPHP [ WE CAN DO IT JUST THINK ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2006~2023 http://thinkphp.cn All rights reserved.
- // +----------------------------------------------------------------------
- // |
- // +----------------------------------------------------------------------
- // | Author: liu21st <liu21st@gmail.com>
- // +----------------------------------------------------------------------
- declare (strict_types = 1);
- namespace app\common\middleware;
- use Closure;
- use think\App;
- use think\Request;
- use think\Response;
- use think\Session;
- /**
- * Session初始化
- */
- class SessionInit
- {
- public function __construct(protected App $app, protected Session $session)
- {
- }
- /**
- * Session初始化
- * @access public
- * @param Request $request
- * @param Closure $next
- * @return Response
- */
- public function handle(Request $request, Closure $next): Response
- {
- // Session初始化
- $varSessionId = $this->app->config->get('session.var_session_id');
- $cookieName = $this->session->getName();
- $http_sid = $request->server("HTTP_SID");
- if ($varSessionId && $request->request($varSessionId)) {
- $sessionId = $request->request($varSessionId);
- } elseif ($http_sid) {
- $sessionId = $http_sid;
- } else {
- $sessionId = $request->cookie($cookieName);
- }
- if ($sessionId) {
- $this->session->setId($sessionId);
- }
- $this->session->init();
- $request->withSession($this->session);
- /** @var Response $response */
- $response = $next($request);
- $response->setSession($this->session);
- $this->app->cookie->set($cookieName, $this->session->getId(), $this->session->getConfig('expire'));
- return $response;
- }
- public function end(Response $response): void
- {
- $this->session->save();
- }
- }
|