【发布时间】:2019-05-16 10:09:07
【问题描述】:
我想使用 Session 在 Laravel 中保存价值,但我丢失了会话数据。我该怎么办?
我尝试将.envSESSION_DRIVER 更改为“redis”或“文件”,但仍然无法正常工作。
这是我的 Api 回调函数,我在这里保存会话。
一个文件.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 文件.php
public function phone(Request $request)
{
$account = $request->session()->get('account', null);
return view('user.trade.phone', compact('account'));
}
我总是得到 $account is Null。
A file.php 中的会话已保存。但是B file.php总是无法获取。
@Rezrazi :
dd($request->session()->all()):
array:4 [▼
"_previous" => array:1 [▶]
"_flash" => array:2 [▶]
"_token" => "zFuqDPebryzAF03ALGb31JIqxG2JxOUlKtSvqPWd"
]
(我也想知道会话“帐户”在哪里)
php artisan route:list (a part of all)
| | POST | api/coolWallet/getAccount | api.coolWallet.getAccount | App\Http\Controllers\Api\CoolWalletController@getAccount | web
【问题讨论】:
-
您使用的是哪个中间件组?
api或web如果您在api.php中定义了路由,那么您将无法使用会话,因为它没有加载 -
Route::prefix('api')->group(function () { Route::post('coolWallet/getAccount', 'Api\CoolWalletController@getAccount')->name('api.coolWallet.getAccount'); });api 不使用中间件 -
你在
routes/api.php中定义了这条路由吗? -
没有。我在```routes/web.php``` 定义路由
-
您能否
dd($request->session()->all())获取所有已加载会话的转储,您能否发布您的php artisan route:list
标签: laravel session laravel-5.8