laravel - 将异常错误消息返回到变量 Laravel
问题描述
我正在使用 laravel 中的 Firebase 登录,它可以正常工作,但我正在尝试将错误消息捕获到会话变量中,然后重定向到登录视图,而是显示 laravel 错误视图。我怎么能避免这种情况?谢谢!
public function login(Request $data) {
$email = $data->input('email');
$password = $data->input('password');
try {
$user = $this->auth->verifyPassword($email, $password);
Session::put('user_uid', $user->uid);
Session::put('user_email', $user->email);
return redirect('/');
} catch (Kreait\Firebase\Exception\Auth\InvalidPassword $e) {
$message = $e->getMessage();
Session::put('message', $message);
return redirect('login');
}
}
解决方案
你需要Kreait\Firebase\Exception\InvalidArgumentException
抓住
public function login(Request $data) {
$email = $data->input('email');
$password = $data->input('password');
try {
$user = $this->auth->verifyPassword($email, $password);
Session::put('user_uid', $user->uid);
Session::put('user_email', $user->email);
return redirect('/');
} catch (\Kreait\Firebase\Exception\Auth\InvalidPassword $e) {
$message = $e->getMessage();
Session::put('message', $message);
return redirect('login');
} catch (\Kreait\Firebase\Exception\InvalidArgumentException $e) {
$message = $e->getMessage();
Session::put('message', $message);
return redirect('login');
} catch (\Kreait\Firebase\Auth\SignIn\FailedToSignIn $e) {
$message = $e->getMessage();
Session::put('message', $message);
return redirect('login');
}
}
如果您使用的是 PHP 7.1+
public function login(Request $data) {
$email = $data->input('email');
$password = $data->input('password');
try {
$user = $this->auth->verifyPassword($email, $password);
Session::put('user_uid', $user->uid);
Session::put('user_email', $user->email);
return redirect('/');
} catch (\Kreait\Firebase\Exception\Auth\InvalidPassword | \Kreait\Firebase\Exception\InvalidArgumentException | \Kreait\Firebase\Auth\SignIn\FailedToSignIn $e) {
$message = $e->getMessage();
Session::put('message', $message);
return redirect('login');
}
}
推荐阅读
- javascript - try/catch 块中的多个依赖 API 调用?(NodeJS)
- c# - 尝试删除租用的 blob 时收到错误“当前 blob 上存在租约且未指定租约 ID”?
- amazon-web-services - Kubernetes Ingress Controller - 它有什么需求?
- javascript - 如何从对象数组中取出公共数组
- python - 嵌套列表的元素
- azure-data-factory - 无法为 Azure 数据工厂添加新的集成运行时
- javascript - 如何使用 pdf-lib 使用带有自定义字体的 javascript 填写 pdf 表单?
- c++ - C++:读取二进制文件并提取值
- apache - Apache:RewriteCond %{QUERY_STRING} 问题
- c# - 使用 Guid 列表中的 linq 查询数据库中的项目