我想使用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
答案 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');
代替了会话。