laravel session详解
2020-08-16 04:31
1636 查看
众所周知,每一个session都要经历从启用,存取,到最后的删除这样一个过程,在laravel中是如何处理session的呢?在laravel里,没有使用PHP内置的 session功能,而是自己开发了新的Session,并且通过中间件直接帮我们开启了Session,那么它是如何启用的,又是怎么处理生命周期的呢,并且都有哪些可以供我们使用的方法呢,一起探讨一下.
laravel Session的启用:
在laravel的核心类文件中(app/Http/Kernel.php)我们可以看到StartSession中间件在优先启用的中间件中位列第一,
打开StartSession.php这个文件,在这里,我们不仅可以看到具体的启用session方法,还可以看到处理session生命周期的函数
protected function getSessionLifetimeInSeconds() { //调用SessionManager.php文件中的getSessionConfig函数,获取session配置文件中的'lifetime'参数,在这个参数里设置了session的生命周期时间. return ($this->manager->getSessionConfig()['lifetime'] ?? null) * 60; }
相关Session方法
在Illuminate\Session\Store.php目录中,我们可以看到为Session量身定制的一些方法,这些方法,在实现Auth快速创建登录和注册功能时都有被用到,感兴趣的话,可以打开该文件去查看
Session配置
Session 配置文件位于 config/session.php,
'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对应的相关参数,如果需要,可以自由定义
修改配置的方法
- 手动修改config目录下的session文件
- 使用config()函数,例如
config('session.lifetime');//直接获取session文件中'lifetime'这个参数 config(['session.lifetime'=>'20']);//则是直接修改
相关文章推荐
- Fragment详解
- OSI七层与TCP/IP五层网络架构详解
- Thread方法详解
- Ehcache配置详解及CacheManager使用
- Oracle数据库:impdp导入数据库及expdp导出数据过程详解
- QML 组件与对象动态创建详解
- 详解Retrofit2.0 公共参数(固定参数)
- 强大的strace命令用法详解
- CentOS 7文件目录属性及权限详解
- 微信小程序日历组件使用方法详解
- 【YOLO】详解:YOLO-darknet训练自己的数据
- PHP设计模式之迭代器(Iterator)模式入门与应用详解
- java内存详解
- linux三剑客之 —— grep命令详解,超详细!
- Oracle数据操作和控制语言详解
- ASP.NET页面事件:顺序与回传详解
- BIND配置文件详解(三)
- epoll使用详解(转)
- http协议详解
- Oracle在线重做日志文件详解