原文链接:http://www.jianshu.com/p/dc33f8ab0618
Lumen5.2 的Release Notes中官方明确的指出Lumen专注于构建无状态API,JSON API 服务,移除了session和view的支持,但其实view还是存在的,session确实真的被移除了
因为项目需要所以我决定找回session,虽然官方建议需要session功能时可以使用强大的Laravel框架,但是对我小项目确实有点大材小用了。因为喜欢Laravel的优雅,所以我在小项目中都会把Lumen做为项目的首选。
下面就来一步步找回“丢失”的session吧!
注册SessionServiceProvider
打开bootstrap/app.php,在相应位置添加注册SessionServiceProvider,代码如下
/*|--------------------------------------------------------------------------| Register Service Providers|--------------------------------------------------------------------------|*/
// 注册 SessionServiceProvider $app->register(Illuminate\Session\SessionServiceProvider::class);
// 载入session相关配置
$app->configure(‘session‘);
configure函数会从文件中加载配置,并绑定到container中,接下来只需要在项目根目录创建config文件夹,并新建session.php配置文件
<?php /** * Created by PhpStorm. * User: Spectre * Date: 2017/6/19 * Time: 11:40 */ return [ ‘driver‘ => env(‘SESSION_DRIVER‘, ‘file‘),//默认使用file驱动,你可以在.env中配置 ‘lifetime‘ => 120,//缓存失效时间 ‘expire_on_close‘ => false, ‘encrypt‘ => false, ‘files‘ => storage_path(‘framework/session‘),//file缓存保存路径 ‘connection‘ => null, ‘table‘ => ‘sessions‘, ‘lottery‘ => [2, 100], ‘cookie‘ => ‘laravel_session‘, ‘path‘ => ‘/‘, ‘domain‘ => null, ‘secure‘ => false, ];
然后在storage/framework/下建立session文件夹用来存储session缓存,别忘了修改权限
注册StartSession中间件
打开bootstrap/app.php,在Register Middleware位置修改
// bootstrap/app.php // ... |-------------------------------------------------------------------------- | Register Middleware |-------------------------------------------------------------------------- // ... $app->middleware([ Illuminate\Session\Middleware\StartSession::class ]);
添加Session别名
因为框架中使用了session别名,所以需要添加alias,不然会报错
// bootstrap/app.php // ... // 注册 SessionServiceProvider $app->register(Illuminate\Session\SessionServiceProvider::class); // 载入session相关配置 $app->configure(‘session‘); // 设置session别名 $app->alias(‘session‘, ‘Illuminate\Session\SessionManager‘);
使用session
至此,你就可以在代码中使用session了,使用 app(‘session‘) 即可获取session实例,示例:
$request->session()->set(‘user‘, $users); $request->session()->get(‘user‘);
时间: 2024-11-05 16:11:42