首页 > 解决方案 > 将异常错误消息返回到变量 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');
        }
    }

标签: laravelexception

解决方案


你需要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');
    }
}

推荐阅读