2015-09-04 209 views
3

我在那裏我創建的會話一個簡單的文件,它看起來像如下:爲什麼Sessions會在Laravel 5.x刷新時消失?

<?php namespace App\Repositories\Managers; 

use Illuminate\Support\Facades\Session; 
use Carbon\Carbon; 

class SessionTest { 

    public function __construct() 
    { 
    } 

    public function sessionTest() 
    { 
     Session::put('test', 111); 
     dd(Session::all()); 
    } 
} 

它讓我的會話權預期。

array:4 [▼ 
    "_token" => "pYbrTbhnsLx6BfUNZusedQSYiBGxL3t9W7IyRVAh" 
    "_previous" => array:1 [▶] 
    "flash" => array:2 [▼ 
    "old" => [] 
    "new" => [] 
    ] 
    "test" => 111 
] 

現在,出於某種原因,當我打開另一個頁面並顯示會議::所有()它給了我回來了以下內容:

array:3 [▼ 
    "_token" => "pYbrTbhnsLx6BfUNZusedQSYiBGxL3t9W7IyRVAh" 
    "_previous" => array:1 [▶] 
    "flash" => array:2 [▼ 
    "old" => [] 
    "new" => [] 
    ] 
] 

基本上它看起來像它刪除所有會話存儲一旦我打開一個新的頁面。

我session.php文件文件看起來像這樣:

<?php 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Default Session Driver 
    |-------------------------------------------------------------------------- 
    | 
    | This option controls the default session "driver" that will be used on 
    | requests. By default, we will use the lightweight native driver but 
    | you may specify any of the other wonderful drivers provided here. 
    | 
    | Supported: "file", "cookie", "database", "apc", 
    |   "memcached", "redis", "array" 
    | 
    */ 

    'driver' => env('SESSION_DRIVER', 'file'), 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Lifetime 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may specify the number of minutes that you wish the session 
    | to be allowed to remain idle before it expires. If you want them 
    | to immediately expire on the browser closing, set that option. 
    | 
    */ 

    'lifetime' => 120, 

    'expire_on_close' => false, 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Encryption 
    |-------------------------------------------------------------------------- 
    | 
    | This option allows you to easily specify that all of your session data 
    | should be encrypted before it is stored. All encryption will be run 
    | automatically by Laravel and you can use the Session like normal. 
    | 
    */ 

    'encrypt' => false, 

    /* 
    |-------------------------------------------------------------------------- 
    | Session File Location 
    |-------------------------------------------------------------------------- 
    | 
    | When using the native session driver, we need a location where session 
    | files may be stored. A default has been set for you but a different 
    | location may be specified. This is only needed for file sessions. 
    | 
    */ 

    'files' => storage_path().'/framework/sessions', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Database Connection 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "database" or "redis" session drivers, you may specify a 
    | connection that should be used to manage these sessions. This should 
    | correspond to a connection in your database configuration options. 
    | 
    */ 

    'connection' => null, 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Database Table 
    |-------------------------------------------------------------------------- 
    | 
    | When using the "database" session driver, you may specify the table we 
    | should use to manage the sessions. Of course, a sensible default is 
    | provided for you; however, you are free to change this as needed. 
    | 
    */ 

    'table' => 'sessions', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Sweeping Lottery 
    |-------------------------------------------------------------------------- 
    | 
    | Some session drivers must manually sweep their storage location to get 
    | rid of old sessions from storage. Here are the chances that it will 
    | happen on a given request. By default, the odds are 2 out of 100. 
    | 
    */ 

    'lottery' => [2, 100], 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Cookie Name 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may change the name of the cookie used to identify a session 
    | instance by ID. The name specified here will get used every time a 
    | new session cookie is created by the framework for every driver. 
    | 
    */ 

    'cookie' => 'ck_session', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Cookie Path 
    |-------------------------------------------------------------------------- 
    | 
    | The session cookie path determines the path for which the cookie will 
    | be regarded as available. Typically, this will be the root path of 
    | your application but you are free to change this when necessary. 
    | 
    */ 

    'path' => '/', 

    /* 
    |-------------------------------------------------------------------------- 
    | Session Cookie Domain 
    |-------------------------------------------------------------------------- 
    | 
    | Here you may change the domain of the cookie used to identify a session 
    | in your application. This will determine which domains the cookie is 
    | available to in your application. A sensible default has been set. 
    | 
    */ 

    'domain' => null, 

    /* 
    |-------------------------------------------------------------------------- 
    | HTTPS Only Cookies 
    |-------------------------------------------------------------------------- 
    | 
    | By setting this option to true, session cookies will only be sent back 
    | to the server if the browser has a HTTPS connection. This will keep 
    | the cookie from being sent to you if it can not be done securely. 
    | 
    */ 

    'secure' => false, 

]; 

好像,當我檢查會話文件沒有得到寫入。它只存儲默認值。

這裏的主要問題是什麼?以前從來沒有面對過。

+1

閱讀permissoin問題也許。 –

回答

1

您是否爲應用程序中的存儲目錄正確分配了寫權限(即777)。這可能會導致問題。

3

試試這個命令日之前():

Session::save() 

會議::保存()將被自動調用渲染時查看。在你的情況下,你在調用這個函數之前退出。因此,您的會話未保存

+0

有沒有這樣的命令會話保存在laravel。 – mdamia

+0

因爲laravel使用Symfony的HttpFoundation包,實際上有一個保存方法https://github.com/symfony/HttpFoundation/blob/master/Session/Session.php – falnyr

+0

我不知道你爲什麼downvote我的答案。 –

0

用途:用於

use Symfony\Component\HttpFoundation\Session\Session; 

代替

use Illuminate\Support\Facades\Session; 

//to set a session variable use 
$session = new Session(); 
$session->set('variableName', $requestData['key']); 

//to get that session variable 
$session = new Session(); 
$session->get('variableName'); 
0

的問題是,我刪除了在JavaScript中的cookie,那麼或許檢查,如果你不使用的東西在刷新之前在你的.js中像這樣:

var now = new Date(); 
now.setTime(now.getTime()+(-1*24*60*60*1000)); 
var expires = "=;"+" path=/; expires="+now.toUTCString(); 
document.cookie = "lastpage"+expires;