Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menghantar mesej ralat tersuai dari LoginController ke frontend?

Saya menambah daftar masuk LoginController untuk mengehadkan bilangan maksimum peranti yang disambungkan untuk pengguna.

Saya menambah yang berikut dalam kaedah LoginControllerlogin()log masuk()

:

public function login(Request $request)
{
    // ... some code ...

    if ($this->attemptLogin($request)) {
        $user = Auth::user();
        if ($user->max_devices >= 5) {
            // if I dd() instead of returning this, it gets here
            return $this->sendMaxConnectedDevicesResponse($request);
        }
    }

    // ... some code ...
}

protected function sendMaxConnectedDevicesResponse(Request $request)
{
    throw ValidationException::withMessage([$this->username() => ['Device limit reached'])->status(403);
}
sendMaxConnectedDevicesResponse 是带有我的自定义消息的 sendLockoutResponse tetapi saya mendapat amaran bahawa saya mempunyai pengecualian yang tidak dikendalikan (< /代码>Unhandled IlluminateValidationValidationException

).

sendLockoutResponseJadi bagaimana saya mengendalikannya seperti

sendLockoutResponse
mengendalikannya supaya ia muncul sebagai ralat pada bahagian hadapan dan bukannya mengabaikannya sahaja? Sekarang, apa yang berlaku ialah walaupun ia membuang ralat, ia tidak menunjukkannya di bahagian hadapan dan terus log masuk seperti biasa

Saya hanya tidak menemui cara untuk membuang dan menangkap ralat tersuai dengan betul🎜
P粉101708623P粉101708623372 hari yang lalu634

membalas semua(1)saya akan balas

  • P粉052686710

    P粉0526867102023-09-17 11:34:34

    Dalam salah satu projek saya, saya menggunakan ini

    throw ValidationException::withMessages([
        'key' => 'error message',
    ]);

    Dalam anda, anda boleh menggunakan

    throw ValidationException::withMessages([
        'device_limit' => 'Device limit reached',
    ]);

    Jadi, di bahagian hadapan, anda boleh menggunakan device_limit 键获取错误。


    Dalam pengawal log masuk anda

    use Illuminate\Http\Request;
    use Illuminate\Http\Exceptions\HttpResponseException;
    
    class LoginController extends Controller
    {
        use AuthenticatesUsers;
    
        protected function authenticated(Request $request, $user)
        {
            if ($user->max_devices >= 5) {
                // Logout the user right after login
                $this->guard()->logout();
    
                // Throw an instance of HttpResponseException
                throw new HttpResponseException(
                    response()->json(['error' => 'Device limit reached'], 403)
                );
            }
        }
    }

    balas
    0
  • Batalbalas