一.配置

Session 配置文件位于config/session.php 。默认情况下,Laravel 使用的session 驱动为文件驱动,这对许多应用而言是没有什么问题的。在生产环境中,你可能考虑使用memcached 或者redis 驱动以便获取更快的 session 性能。

session 驱动定义请求的 session 数据存放在哪里,Laravel 可以处理多种类型的驱动:
• file – session 数据存储在storage/framework/sessions 目录下;
• cookie – session 数据存储在经过加密的安全的 cookie 中;
• database – session 数据存储在数据库中
• memcached / redis – session 数据存储在 memcached/redis 中;
• array – session 数据存储在简单 PHP 数组中,在多个请求之间是非持久化的。
注意:数组驱动通常用于运行测试以避免 session 数据持久化。

二.配置session到数据库

1.当使用database session 驱动时,需要设置表包含session 项,下面是该数据表的表结构声明:

Schema::create('sessions', function ($table) {
$table->string('id')->unique();
$table->text('payload');
$table->integer('last_activity');
});

  

2.你可以使用 Artisan 命令session:table 来生成迁移:

php artisan session:table
composer dump-autoload
php artisan migrate

  

三.基本使用

1.访问session

$value = $request->session()->get('key', 'default');
获取所有数据
$data = $request->session()->all(); 2.利用session函数读写
读:
$value = session('key');
写:
session(['key' => 'value']); 3.判断session是否存在:
$bool = $request->session()->has('users'); 4.在session中存数据
获取到session实例后,就可以调用多个方法来与底层数据进行交互,例如,put方法存储新的数据到session中:
$request->session()->put('key', 'value'); 5.推送数组到session
push 方法可用于推送数据到值为数组的session,例如,如果user.teams键包含团队名数组,可以像这样推送新值到该数组:
$request->session()->push('user.teams', 'developers'); 6.获取并删除session
pull方法将会从session获取并删除数据:
$value = $request->session()->pull('key', 'default'); 7.从session中删除数据项
$request->session()->forget('key'); //删除一个
$request->session()->flush(); //删除全部 8.重新生成Session ID
$request->session()->regenerate();

  

四.一次性数据

有时候你可能想要在 session 中存储只在下个请求中有效的数据,可以通过flash 方法来实现。使用该方法存
储的 session 数据只在随后的 HTTP 请求中有效,然后将会被删除:

$request->session()->flash('status', 'Task was successful!');

  

如果你需要在更多请求中保持该一次性数据,可以使用reflash 方法,该方法将所有一次性数据保留到下一个请求,如果你只是想要保存特定一次性数据,可以使用keep 方法:

$request->session()->reflash();
$request->session()->keep(['username', 'email']);

  

五.自定义session驱动

Laravel之Session的更多相关文章

  1. laravel框架session使用教程

    laravel是一款php框架了,在使用laravel时会碰到session使用问题了,在使用过程中碰到一些问题与一些应用的例子. 用Laravel开发应用,把原有的代码copy过来,以前的代码ses ...

  2. laravel中session的过期时间

    在项目开发的过程中,前后端分离 需要用session保存用户的登陆信息 这就涉及到session的有效期了 session又分为php中的session有效期和laravel中的session的有效期 ...

  3. Laravel处理session(会话)的方法详解

    在Web应用程序中,有必要识别跨越请求的用户并为每个用户保存数据,为此,像Laravel这样的框架提供了一种称为会话的机制.本篇文章就来为大家介绍关于Laravel处理session(会话)的方法. ...

  4. Laravel 中 Session 的使用问题(dd()导致laravel中session取值问题)

    Laravel 中 Session 的使用问题(dd()导致laravel中session取值问题) 一.总结 一句话总结: Laravel 会首先收集需要写入 Session 的所有数据,并在用户的 ...

  5. Laravel中Session的使用

    以file为示例 1.Http request session方法$request->session()->put('key1','value1');echo $request->s ...

  6. laravel中将session由文件保存改为数据库保存

    1.laravel中默认是使用文件保存session的,保存在/storage/framework/sessions下 2.修改配置文件 config/session.php中 'driver' =& ...

  7. Laravel框架——Session操作

    use Session;//session的永久保存(在不过期范围内) Session::put('key', 'value'); //等同于PHP的原生session $_SESSION['key' ...

  8. laravel 共享session问题总结

    我现在有一个A系统已经上线了,但是要开始研发另外一个功能,我打算把这个功能独立成一个B系统出来,放在其他域名下面,打算在这个A系统登录后,里面一个连接跳转到B系统,看到一些资料说用到共享Session ...

  9. laravel 使用 session

    配置方面的不写了,请参考学院君的文章:http://laravelacademy.org/post/5898.html 在开始之前先说一下,使用 request 对象的 session() 方法,和直 ...

随机推荐

  1. 蓝牙攻击指南(kali)

    基本操作 hciconfig 查看蓝牙设备信息 hcitool:这是一个查询工具. 可以用来查询设备名称,设备ID,设备类别和设备时钟. hcidump:可以使用这个来嗅探蓝牙通信 hciconfig ...

  2. error C2440: 'static_cast' : cannot convert from 'UINT (__thiscall CStaticLink::* )(CPoint)' to 'LRESULT (__thiscall CWnd::* )(CPoint) (转)

    原文转自 http://blog.csdn.net/yinxing408033943/article/details/7601698 解决方法: 找到  UNIT CStaticLink::OnNcH ...

  3. python 向mysql插入数据

    生成随机内容用到的方法: substr是一个字符串函数,从第二个参数1,开始取字符,取到3 + floor(rand() * 75)结束 floor函数代表的是去尾法取整数. rand()函数代表的是 ...

  4. oracle 批量改temp/data/redo file的路径

    批量生成修改路径的脚本.select 'alter database rename file ''' || name ||'''' || ' to '''|| substr(name,0,instr( ...

  5. 字符编码笔记:ASCII、Unicode、UTF-8 和 Base64

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一 ...

  6. input 限制输入字段总结

    把输入框中 输入的字符串含有中文逗号 改成 英文逗号 举例: <input type="text" id="keywords" style="w ...

  7. 如何将django部署从顶级目录迁移到子目录下(NGINX UWSGI DJANGO)

    因为公司网站合并,要将我们的DJANGO项目从IP的顶级目录迁移到域名的二级目录. 以前硬编码的URL可惨了. 还涉及到upload目录,静态目录,websocket目录. 全用{% url %}问题 ...

  8. linq连接sqlite数据库(linq to sqlite) .net3.5

    http://www.cnblogs.com/xianyin05/archive/2012/12/23/2829905.html using Models; using System; using S ...

  9. 洛谷 P1739 表达式括号匹配【STL/stack/模拟】

    题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返 ...

  10. “玲珑杯”ACM比赛 Round #1

    Start Time:2016-08-20 13:00:00 End Time:2016-08-20 18:00:00 Refresh Time:2017-11-12 19:51:52 Public ...