zoukankan      html  css  js  c++  java
  • Lumen中启用session

    原文链接: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(IlluminateSessionSessionServiceProvider::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([
        IlluminateSessionMiddlewareStartSession::class
    ]);

    添加Session别名

    因为框架中使用了session别名,所以需要添加alias,不然会报错

    // bootstrap/app.php
    // ...
    // 注册 SessionServiceProvider
    $app->register(IlluminateSessionSessionServiceProvider::class);
    
    // 载入session相关配置
    $app->configure('session');
    
    // 设置session别名
    $app->alias('session', 'IlluminateSessionSessionManager');

    使用session

    至此,你就可以在代码中使用session了,使用 app('session') 即可获取session实例,示例:

     $request->session()->set('user', $users);
     $request->session()->get('user');
  • 相关阅读:
    ORACLE 变量定义
    AcWing1082 数字游戏(数位dp)
    AcWing1081 度的数量(数位dp)
    UCF Local Programming Contest 2017 I题 Rotating Cards(贪心+树状数组)
    AcWing1048 鸡蛋的硬度(浅谈两种解法的思考方向)
    CF713C Sonya and Problem Wihtout a Legend (经典dp)
    CF269B Greenhouse Effect (dp LIS)
    CF463D Gargari and Permutations (LCS)
    AcWing987 最长公共子序列
    CF721C Journey (dp+拓扑)
  • 原文地址:https://www.cnblogs.com/spectrelb/p/7048084.html
Copyright © 2011-2022 走看看