众所周知,每一个session都要经历从启用,存取,到最后的删除这样一个过程,在laravel中是如何处理session的呢?在laravel里,没有使用PHP内置的 session功能,而是自己开发了新的Session,并且通过中间件直接帮我们开启了Session,那么它是如何启用的,又是怎么处理生命周期的呢,并且都有哪些可以供我们使用的方法呢,研究一下.
1.laravel Session的启用:
在laravel的核心类文件中(app/Http/Kernel.php)我们可以看到StartSession中间件在优先启用的中间件中位列第一,
protected function getSessionLifetimeInSeconds()
{
//调用SessionManager.php文件中的getSessionConfig函数,获取session配置文件中的'lifetime'参数,在这个参数里设置了session的生命周期时间.
return ($this->manager->getSessionConfig()['lifetime'] ?? null) * 60;
}
2.相关Session方法
在Illuminate\Session\Store.php目录中,我们可以看到为Session量身定制的一些方法,这些方法,在实现Auth快速创建登录和注册功能时都有被用到,感兴趣的话,可以打开该文件去查看
3.Session配置
'driver' => env('SESSION_DRIVER', 'file'), //session驱动,默认为flie驱动
'lifetime' => env('SESSION_LIFETIME', 120), //生命周期,默认为120分钟
'expire_on_close' => false, //关闭浏览器是否自动删除session
'encrypt' => false, //存储的session数据是否需要加密
'files' => storage_path('framework/sessions'), //file驱动保存路径,默认为storage/framework/sessions/下
'connection' => env('SESSION_CONNECTION', null), //如果使用数据库驱动或者redis驱动时,连库管理session
'table' => 'sessions', //使用数据库驱动时,创建的session表名
'store' => env('SESSION_STORE', null), //使用apc 或者memcached驱动的配置
'lottery' => [2, 100], //清除旧session
'cookie' => env( //cookie名称
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
'path' => '/', //cookie
'domain' => env('SESSION_DOMAIN', null),
'secure' => env('SESSION_SECURE_COOKIE', false),
'http_only' => true, //将此值设置为true将阻止JavaScript访问cookie的值
'same_site' => null,
通过这里我们可以看到在.env环境中有与session对应的相关参数,如果需要,可以自由定义
4.修改配置的方法
-
手动修改config目录下的session文件
-
使用config()函数,例如
config('session.lifetime');//直接获取session文件中'lifetime'这个参数
config(['session.lifetime'=>'20']);//则是直接修改
5.Laravel Session的保存机制
与$_SESSION不同Laraver中的session是在当次程序执行完毕时保存到文件或其他存储引擎中的,也就是说如果使用了die等强制结束程序的函数将不会自动保存session导致session失效,但Laravel提供了save()方法来手动保存session
//session不生效的例子
session()->put(['user_id'='10086']);
die();
//手动保存session的例子
session()->put(['user_id'='10086']);
session()->save();
die();
*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。
END
PHP开源社区 扫描关注 进入”PHP资料“
免费获取进阶
面试、文档、视频资源
文章评论