session
默认使用文件保持 session,如需修改,除了在env文件中修改外,还需要在配置文件中做相应的修改
一、使用 database 保存 session,需要创建表,执行下面两条语句
php artisan session:table
php artisan migrate
二、使用 redis 保存 session:在 config/database.php 中为 Redis 配置 Session 连接
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
'session' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 6,
],
],
在构造函数__construct中使用Session问题
一般的做法是:登录成功-->信息存 session-->认证路由走中间件进行认证 现在在后续的一个认证路由中,如果采用下面这样的方法来获取 session,会取不到的
public function __construct() {
$user_id = session('pwd_id');
echo $user_id;exit;
}
原因是因为构造方法会在session前执行,这时候session还没开启,所以就取不到咯,解决办法如下:
public function __construct() {
$this->middleware(function ($request, $next) {
$this->user_id = session()->get('pwd_id');
// 也可使用 Session::get('user_id'); 需声明 use Session;
return $next($request);
});
}