Laravel5为啥设置session的lifetime时间就是没有用的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel5为啥设置session的lifetime时间就是没有用的相关的知识,希望对你有一定的参考价值。
php 代码为://Session_Start 30 minutes destroy
$lifeTime = 1800;//单位:秒
try
session_start();
setcookie( session_name(), session_id(), time() + $lifeTime, "/" );
catch ( Exception $e )
session_set_cookie_params( $lifeTime );
session_start();
$_SESSION["LOGIN"] = "OK";
相关说明:
Session 是如何来判断客户端用户的呢?它是通过 Session ID 来判断的,什么是 Session ID,就是那个 Session 文件的文件名,Session ID 是随机生成的,因此能保证唯一性和随机性,确保 Session 的安全。一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID。
如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:如上面的代码所示。 参考技术A session过期时间是从最后一次会话结束开始算的,如果你在过期时间内重新连接过,那么过期时间会重置
laravel session redis 设置
Laravel 在使用 Redis 作为 Session 驱动之前,
需要通过 Composer 安装 predis/predis 扩展包 (~1.0)。
当然也可以用原生自带的,具体使用见
https://laravel-china.org/docs/laravel/5.6/redis/1402#phpredis 操作即可。
然后在database 配置文件中配置 Redis 连接信息。
在 session 配置文件中,connection 选项可用于指定 Session 使用哪个 Redis 连接。
注意这个connection 即 config/database.php 当中的
‘redis‘ => [
‘client‘ => ‘predis‘,
‘default‘ => [
‘host‘ => env(‘REDIS_HOST‘, ‘localhost‘),
‘password‘ => env(‘REDIS_PASSWORD‘, null),
‘port‘ => env(‘REDIS_PORT‘, 6379),
‘database‘ => 0,
],
],
database 的值,这是个数字
另外在更新完配置文件时会自动生成文件缓存,记得使用
清理项目文件缓存
php artisan cache:clear
清理配置文件缓存 「之前折腾了好久没有成功就是这个原因导致的」
php artisan config:clear
以上是关于Laravel5为啥设置session的lifetime时间就是没有用的的主要内容,如果未能解决你的问题,请参考以下文章