Wie sende ich eine benutzerdefinierte Fehlermeldung von LoginController an das Frontend?
P粉101708623
P粉101708623 2023-09-16 12:57:17
0
1
627

Ich habe einen Check-in hinzugefügt LoginController, um die maximale Anzahl verbundener Geräte für einen Benutzer zu begrenzen.

Ich habe Folgendes in LoginControllerlogin()s

login()-Methode hinzugefügt:

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 是带有我的自定义消息的 sendLockoutResponseaber ich erhalte eine Warnung, dass ich eine nicht behandelte Ausnahme habe (< /代码>Unhandled IlluminateValidationValidationException

).

sendLockoutResponseWie gehe ich also damit um, so wie

sendLockoutResponse
damit umgeht, sodass es als Fehler im Frontend angezeigt wird, anstatt es einfach zu ignorieren? Was nun passiert, ist, dass es, selbst wenn der Fehler ausgegeben wird, ihn nicht im Frontend anzeigt und sich weiterhin wie gewohnt anmeldet

Ich habe einfach keine Möglichkeit gefunden, benutzerdefinierte Fehler richtig auszulösen und abzufangen🎜
P粉101708623
P粉101708623

Antworte allen(1)
P粉052686710

在我的一个项目中,我使用了这个

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

在你的中,你可以使用

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

因此,在前端,您可以使用 device_limit 键获取错误。


在您的登录控制器中

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)
            );
        }
    }
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!