【问题标题】:Using Laravel 5 Sessions Externally在外部使用 Laravel 5 会话
【发布时间】:2016-02-29 21:10:02
【问题描述】:

我已经弄清楚如何在外部脚本中启动 Laravel,但我似乎无法让 Session::put() 坚持下去。

$path = "/path/to/laravel/bootstrap/";

require $path . 'autoload.php';
$app = require_once $path . 'app.php';

$app->make('Illuminate\Contracts\Http\Kernel')
  ->handle(Illuminate\Http\Request::capture());

print_r(Session::all());
Session::put('test', 1);

即使我刷新后,输出也是这样:

Array ( 
    [_token] => emt8sZz7U6prnGUnHV889XPKwuhRCuMpVsAOfWW0 
    [flash] => Array ( 
        [old] => Array ( ) 
        [new] => Array ( ) 
    ) 
    [_previous] => Array ( 
        [url] => http://myurl.local  
    )
)

没有我的测试变量的踪迹。由于某种原因,它没有进入会话。

解决方案:

看起来我需要调用 Session::save()。下面的新问题。

新问题:

我发现 Laravel 会话在已经存在会话时效果很好。当没有会话时,此方法不会创建新会话。具体来说,cookie(laravel_session)没有设置。

有什么想法吗?

【问题讨论】:

    标签: php laravel session laravel-5


    【解决方案1】:

    以下方式适用于 laravel 5.2 在我的情况下,由于某种原因,会话 cookie 不会出现在没有控制器/操作的页面上 - 没有在路由中描述

     <?php
    namespace App\Helpers;
    use Session;
    
    class SessionHelper extends \App\Auth\SessionData
    {
    
    /**
     * to init session on non laravel controller pages
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    static public function oldCodeInitSessionFoIfNotExists ($request)
    {
        $cookieVarName     = $request->session()->getName();
        $sessionID         = $request->session()->getId();
        $sessionExpiration = config('session.lifetime')*60;
        $cookiePath        = config('session.path');
        $cookieDomain      = config('session.domain');
    
        setcookie($cookieVarName, $sessionID, time()+$sessionExpiration, $cookiePath, $cookieDomain);
    
    
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试过从外部脚本手动启动会话?像这样的东西应该可以解决问题:

      if (isset($_COOKIE[$app['config']['session.cookie']])) {
          $id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]);
          $app['session']->driver()->setId($id);
      }
      
      $app['session']->driver()->start();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-08
        • 2015-07-31
        • 2015-06-03
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        相关资源
        最近更新 更多