Laravel学习笔记基础系列--(十六)Laravel Session操作
作者:温新
时间: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','添加成功');
我是温新
每天进步一点点,就一点点
请登录后再评论