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);
	});
}