Laravel 5.8 Session 小姐来自 API 回调

Laravel 5.8 Session Miss From API Callback

我想用Session保存Laravel的值,但是我丢失了session的数据。我该怎么办?

我尝试将 .env SESSION_DRIVER 更改为 'redis' 或 'file',但仍然无效。

这是我的Api回调函数,我把session保存在这里

一个file.php

public function getAccount(Request $request)
    {
        try {
            $request->session()->forget('account');
            $data = json_decode(file_get_contents('php://input'), true);

            Log::info('result => '.($data['result'][0]));

            if($data['error']) {
                Log::info('CoolWalletController GetAccount Has Error : ' . $data['result']);
            }else{

                $request->session()->put('account', $data['result'][0]);

            }

            $request->session()->save();

            Log::info('Session => '.session('account'));

            Log::info('====================');

            return 'ok';
        } catch (Exception $e) {
            Log::info('FAILED!!');
        }
    }

这是我的日志文件:

[2019-05-16 17:20:40] local.INFO: ====================  
[2019-05-16 17:20:58] local.INFO: result => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:20:58] local.INFO: Session => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:20:58] local.INFO: ====================  
[2019-05-16 17:34:52] local.INFO: result => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:34:52] local.INFO: Session => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:34:52] local.INFO: ====================  
[2019-05-16 17:37:21] local.INFO: result => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:37:21] local.INFO: Session => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:37:21] local.INFO: ====================  
[2019-05-16 17:47:43] local.INFO: result => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:47:43] local.INFO: Session => 0xb74bCB9747dBd6DfC75D1E9321e75766705cf213  
[2019-05-16 17:47:43] local.INFO: ====================  


这是我想在这里得到的另一个控制器函数Session。 B file.php

public function phone(Request $request)
    {

        $account =  $request->session()->get('account', null);

        return view('user.trade.phone', compact('account'));
    }

我总是得到 $account is Null。

刚刚在Afile.php中的session有保存。但是Bfile.php总是拿不到。



@Rezrazi:

dd($request->session()->all()):

array:4 [▼
  "_previous" => array:1 [▶]
  "_flash" => array:2 [▶]
  "_token" => "zFuqDPebryzAF03ALGb31JIqxG2JxOUlKtSvqPWd"
]

(我也想知道session 'account'在哪)

phpartisanroute:list(全部的一部分)

|        | POST          | api/coolWallet/getAccount       | api.coolWallet.getAccount       | App\Http\Controllers\Api\CoolWalletController@getAccount       | web     


这样试试:

$account =  $request->session()->get('account');

路由结构:

Route::group(['middleware' => ['web'], 'prefix' => 'api'], function(){

   // YOUR ROUTES
});

函数 A

public function getAccount(Request $request)
    {
        try {
            $request->session()->put('account', "TEST");
            return 'ok';
        } catch (Exception $e) {
            Log::info('FAILED!!');
        }
    }

函数 B

public function phone(Request $request)
    {
        $account =  $request->session()->get('account');
        // Check the value
        dd($account);
        return view('user.trade.phone', compact('account'));
    }

Session 需要浏览器支持。 所以 api 路由不是 return 返回浏览器,它只是用于回调。

所以我使用 Redis::set('key','value'); 而不是会话。