Laravel 5.8会话未通过API回调

时间:2019-05-16 10:09:08

标签: laravel session laravel-5.8

我想使用Session在Laravel中保存价值,但是我丢失了Session数据。我该怎么办?

我尝试将.env SESSION_DRIVER更改为'redis'或'file',但仍然无法正常工作。

这是“我的Api回调”功能,我将会话保存在此处。

一个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为Null。

file.php 中的会话已保存。但是 B file.php 始终无法获取。



@Rezrazi:

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

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

(我也想知道会话“帐户”在哪里)

php artisan route:list(全部的一部分)

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


2 个答案:

答案 0 :(得分:0)

尝试这样:

$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'));
    }

答案 1 :(得分:0)

会话需要浏览器支持。 因此api路由不会返回浏览器,而只是用于回调。

所以我使用Redis::set('key','value');代替了会话。