Rumah > Soal Jawab > teks badan
Saya menambah daftar masuk LoginController
untuk mengehadkan bilangan maksimum peranti yang disambungkan untuk pengguna.
Saya menambah yang berikut dalam kaedah LoginController
的 login()
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).
sendLockoutResponse
Jadi 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粉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) ); } } }