由於Laravel session機制完全脫離了PHP自帶的session機制 因此對於php.ini 配置session對Laravel 是不會產生影響 代碼路徑: vendor/laravel/framework/src/Illuminate/Session/Store.php 驗證猜測 魔術方 ...
由於Laravel session機制完全脫離了PHP自帶的session機制 因此對於php.ini 配置session對Laravel 是不會產生影響
代碼路徑: vendor/laravel/framework/src/Illuminate/Session/Store.php
驗證猜測 魔術方法 __construct
/** * Create a new session instance. * * @param string $name * @param \SessionHandlerInterface $handler * @param string|null $id * @return void */ public function __construct($name, SessionHandlerInterface $handler, $id = null) { $this->setId($id); $this->name = $name; $this->handler = $handler; }
關於其中的ID 就是我們說的sessionID
查看 setId()
/** * Set the session ID. * * @param string $id * @return void */ public function setId($id) { $this->id = $this->isValidId($id) ? $id : $this->generateSessionId(); }
如果id 為空 調用 generateSessionId()
/** * Get a new, random session ID. * * @return string */ protected function generateSessionId() { return Str::random(40); }
方法 Str::random(40) 文件 :vendor/laravel/framework/src/Illuminate/Support/Str.php
/** * Generate a more truly "random" alpha-numeric string. * * @param int $length * @return string */ public static function random($length = 16) { $string = ''; while (($len = strlen($string)) < $length) { $size = $length - $len; $bytes = random_bytes($size); $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size); } return $string; }
可見 sessionID 使用的是本地的ID生成40位長度的字元串
如果有興趣的同學 可以驗證 在控制器方法中 使用原生的session方法 查看返回http頭中的信息