laravel session

众所周知,每一个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‘]);//则是直接修改

原文地址:https://www.cnblogs.com/MrBear/p/10272665.html

时间: 2024-07-31 03:01:22

laravel session的相关文章

laravel session的使用

用Laravel开发应用,把原有的代码copy过来,以前的代码session使用了$_SESSION,本以为移植过来可以很好的运行的,因为没有依赖其他的组件,结果出现了这个 Undefined variable: _SESSION Laravel的session的配置文件配置在 app/config/session.php 中,使用时可以看看 session 配置文件中可用的选项设定及注释. Laravel 默认使用 file 的方式来实现 session的.她并不用php原生的$_SESSIO

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

Laravel session的保存机制

与$_SESSION不同Laraver中的session是在当次程序执行完毕时保存到文件或其他存储引擎中的,也就是说如果使用了die等强制结束程序的函数将不会自动保存session导致session失效,但Laravel提供了save()方法来手动保存session //session不生效的例子 session()->put(['user_id'='10086']); die(); //手动保存session的例子 session()->put(['user_id'='10086']); s

laravel session使用 转自http://blog.csdn.net/angle_hearts/article/details/53923782

use Symfony\Component\HttpFoundation\Session\Session;//存储session $session = new Session;$session->set("u_name",$ar->u_name);$session->set("u_pwd",$ar->u_pwd);//每次取session必加上 use Symfony\Component\HttpFoundation\Session\Sess

laravel session flash

简单的例子,更高级的插件应用在components目录 控制器放入,flash是一次性的,put不是 \Session::flash('flash_msg','Your article has been created!'); 视图显示 @if (Session::has('flash_msg')) <div class='alert alert-success'> {{ Session::get('flash_msg') }} </div> @endif

HTTP层 &mdash;&mdash; Session

1.简介 由于HTTP驱动的应用是无状态的,所以我们使用Session来存储用户请求信息.Laravel通过干净.统一的API处理后端各种Session驱动,目前支持的流行后端驱动包括Memcached.Redis和数据库. 配置 Session配置文件位于config/session.php.默认情况下,Laravel使用的session驱动为文件驱动,这对许多应用而言是没有什么问题的.在生产环境中,你可能考虑使用memcached或者redis驱动以便获取更快的session性能. sess

Laravel项目和其它项目共享session问题

我这边总结一下,也许以后有人会需要,其实Laravel的session并不是用PHP自带的session管理器.而是完完全全自己实现了一个.注意是完完全全自己实现的,并不是传统意义上用session_set_save_handler自定义的session处理器. 所以解决 和另一个ThinkPHP项目的session共用 的问题就很简单了~在Laravel中启动PHP自带的session就好了,也就是session_start. 这是他们的代码注释 "Note that the Laravel

laravel 4.2 session

laravel的session简要API Session的API还是比较简单的,大家看看中文文档也大概知道是怎么个意思.但是有那么几个还不太好理解. //session的永久保存(在不过期范围内) Session::put('key', 'value'); //等同于PHP的原生session $_SESSION['key'] = 'value'; //get操作 $value = Session::get('key', 'default'); //去除操作并删除,类似pop概念 $value 

laravel框架中的session问题

这两天一直在鼓捣服务器,配置环境,在搭建laravel的过程之中,发现了laravel中的session的一些问题,这里总结一下: (1):我在服务器上搭建了多个sever,为了测试学习,分别使用不同的php框架,laravel,tp,原生,一开始发现session跨域的问题,就修改了php.ini中的session_cookie_domain参数, 设置为session_cookie_domain= .xxxx.top (注:php.ini中的cookie.path默认为 /,所以不需要进行修