Laravel 5.8 Сессия пропущена из обратного вызова API - PullRequest
0 голосов
/ 16 мая 2019

Я хочу использовать Session для сохранения значения в Laravel, но я потерял данные сеанса. Как мне это сделать?

Я попытался изменить .env SESSION_DRIVER на 'redis' или 'file', но он все еще не работает.

Это функция обратного вызова My 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: ====================  


Это еще одна функция контроллера, которую я хочу получить здесь. B file.php

public function phone(Request $request)
    {

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

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

Я всегда получаю $ account is Null.

Сессия только в Файл .php имеет сохранение. Но B file.php всегда не получается.



@ Резрази:

дд ($ request-> сессия () -> все ()):

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

(мне также интересно, где сессия 'account')

php artisan route: список (часть всего)

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


Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Сессия требуется поддержка браузера. Поэтому маршрут API не возвращается обратно в браузер, он только для обратного вызова.

поэтому я использую Redis::set('key','value'); вместо сессии.

0 голосов
/ 16 мая 2019

Попробуйте так:

$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'));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...