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时间就是没有用的的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5中的Session

laravel5 session的基本使用

PHP 为啥 $_SESSION 变量拒绝在浏览器关闭时取消设置?

laravel5.6框架中session的使用

Laravel5.5 实现session配置

C#在控制器中设置session过期时间为2小时,为啥实际应用中20分钟session就消失了?,