Estoy usando Laravel Passport ( auth:api ), todo funciona bien, sin embargo, se me ocurrió la idea de registrar las solicitudes de los usuarios en una ruta específica.
Cuando se realiza una solicitud GET a /movie/65 , me gustaría almacenar en movie_view los siguientes datos: user_id , movie_id (si el usuario ha iniciado sesión)
Sin embargo, en mi controlador no puedo llamar a $request->user() sin configurar auth:api middleware.
¿Cuál es la mejor práctica que recomienda para lograr esto?
La mejor manera de hacer esto es:
if (\Auth::guard('api')->check()) { $user = \Auth::guard('api')->user(); }debe configurar la protección en 'api', la predeterminada es 'web'.
El tipo de autenticación predeterminado debe establecerse en 'api' en config/auth.php
Fuente: https://laracasts.com/discuss/channels/general-discussion/opcional-authentication-for-api?page=0 (fue muy difícil de encontrar)
Puede crear un middleware personalizado como se sugiere aquí: https://laracasts.com/discuss/channels/laravel/how-to-handle-route-with-opcional-autenticación . Luego api guard. Digamos que asigna ese middleware personalizado como auth.optional en Kernel.php , luego puede usar ese middleware como auth.optional:api (con esa protección de api ). Luego puede acceder al usuario a través $request->user() en su caso anterior.