我想在控制器完成運行后將一些引數傳遞給 after 中間件,這是為了在生成新的密碼重置令牌時使任何密碼重置令牌無效。
我的代碼是:
控制器
公共函式 resetPasswordRequest(Request $request) {
$user = User::where('email', $request->email)->first();
if (!$user) {
throw ValidationException::withMessages([
'message' => 'invalid_email',
]);
}
$reset_request = Password_reset::create([
'user_email' => $request['email'],
'reset_token' => Helper::makeRandomString(8, true),
]);
$reset_token = $reset_request['reset_token'];
$user_email = $request['email'];
/*
Helper::sendEmail('pass_reset', $user_email = $request['email'], $reset_token);
*/
return response(array('message' => 'success', 'email' => $user_email, 'reset_token' => $reset_token, 'type' => 'reset'), status:200);
}
//中間件
public function handle(Request $request, Closure $next)
{
$user_data = $next($request);
error_log($user_data);
$user_email = $user_data['email'];
$type = $user_data['reset'];
$tokens = null;
if ($type == 'reset') {
$tokens = Password_reset::where('user_email', '=', $user_email)->where('used', false)->get();
} else if ($type == 'confirmation') {
$tokens = EmailConfirm::where('user_email', '=', $user_email)->where('used', false)->get();
error_log('fffff');
}
error_log('gggg');
//Might not be optimum, need consultation
foreach ($tokens as $column) {
$column['used'] = true;
$column->save();
}
return $next($request);
}
問題在于我似乎無法找到傳遞這些資料的方法,如果我嘗試通過 content 方法訪問它,結果將是一個字符陣列。
關于這個或我可以使用的其他解決方案的任何提示?
uj5u.com熱心網友回復:
您不需要中間件,因為重置密碼幾乎從來都不是受保護的資源。
如果忘記密碼,如何登錄并訪問受保護的資源?
中間件是保護路由及其對應的控制器。
在這種情況下,有一個用戶未登錄并想重置其帳戶的密碼。
只需在控制器中處理請求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361935.html
上一篇:此集合實體上不存在屬性[id]?
