Maison > Questions et réponses > le corps du texte
J'ai ajouté un check-in LoginController
pour limiter le nombre maximum d'appareils connectés pour un utilisateur.
J'ai ajouté ce qui suit dans la méthode LoginController
的 login()
login() de
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
mais je reçois un avertissement indiquant que j'ai une exception non gérée (< /代码>Unhandled IlluminateValidationValidationException).
sendLockoutResponse
Alors, comment puis-je le gérer comme
sendLockoutResponse
le gère pour qu'il apparaisse comme une erreur sur le frontend au lieu de simplement l'ignorer ? Maintenant, ce qui se passe, c'est que même s'il renvoie l'erreur, il ne l'affiche pas sur le frontend et continue de se connecter comme d'habitude Je n'ai tout simplement pas trouvé de moyen de lancer et de détecter correctement les erreurs personnalisées🎜
P粉0526867102023-09-17 11:34:34
Dans un de mes projets, j'ai utilisé ceci
throw ValidationException::withMessages([ 'key' => 'error message', ]);
Dans votre, vous pouvez utiliser
throw ValidationException::withMessages([ 'device_limit' => 'Device limit reached', ]);
Donc, sur le frontend, vous pouvez utiliser device_limit 键获取错误。
Dans votre contrôleur de connexion
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) ); } } }