【问题标题】:Return exception error message into a variable Laravel将异常错误消息返回到变量 Laravel
【发布时间】:2019-04-25 10:16:51
【问题描述】:

我在 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');
        }
    }

【问题讨论】:

  • 它正在抛出 InvalidArgumentException,但您只捕获了 Kreait\Firebase\Exception\Auth\InvalidPassword 异常。
  • 你使用的PHP版本是什么?
  • 我也尝试过捕获 InvalidArgumentException,但即使我尝试使用无效密码,我也会得到相同的错误页面。我正在使用 php 7.1.12

标签: laravel exception


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 2014-04-16
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多