Laravel学习笔记基础系列--(十六)Laravel Session操作

作者: 温新

分类: 【Laravel】

阅读: 1790

时间: 2021-07-15 14:58:30

作者:温新

时间:2021-06-27

一个最常见的场景,登录,就到了session记录用户信息。由于HTTP是一次性请求,第一次请求告诉了它姓名,第二次来访问时,它就不知道你是谁了。session可以解决这样的问题,让你变化网站的老朋友,来了就进去。

Laravel自己实现了一套更为灵活的SESSION机制,因此,在Laravel框架中使用原生$_SESSION是无法获取到信息的。

配置文件

session的配置文件位于config/session.php。默认使用file驱动。生产环境中可以考虑换成redis等作为驱动。本案例以file驱动作为演示。

配置文件中'driver' => env('SESSION_DRIVER', 'file'),使用文件驱动,数据存放在storage/freamework/sessions目录中。

准备操作

设置session操作将在DemoController中的index方法进行。定义如下路由用于获取session

// 获取session
Route::get('getsession', function(){ 
});

操作session

三种方式设置session

use Illuminate\Support\Facades\Session;

public function index(Request $request)
{	
	// 方式一 通过门面
	Session::put('name','李四');
	// 方式二 通过$request实例方法
	$request->session()->put('age',18);
	// 方式三 全局辅助函数
	session(['phone'=>1888888888]);

    return view('demo.index')->with('msg','动态数据');
}

三种方式获取单个session

Route::get('getsession', function(\Illuminate\Http\Request $request){
    dump(session('name'));
    dump($request->session()->get('age'));
    dump(\Illuminate\Support\Facades\Session::get('phone'));
});

获取所有session

Route::get('getsession', function(\Illuminate\Http\Request $request){
    dump($request->session()->all());
    dump(\Illuminate\Support\Facades\Session::all());
});

删除session

// web.php

// 删除单个值
$request->session()->forget('age');
// 删除多个值
$request->session()->forget(['name','phone']);
// 删除所有值
$request->session()->flush();

一次性session

在一些初级的教程中,提交操作用的是form表单模拟,而非异步操作,因此,提交成功后是没有返回信息的。如添加操作,需要在成功给出一个提示信息。那么这可以使用一次性session了。

$request->session()->flash('status','添加成功');

我是温新

每天进步一点点,就一点点

请登录后再评论