Tengo un problema para entender el uso de tokens CSRF con Laravel/Sanctum. Como veo, no hay necesidad de crear el token API de Sanctum para autenticar al usuario, y teniendo en cuenta que mi interfaz (Vue) está integrada en los recursos de Laravel, quiero verificar Auth::check() en la hoja de la siguiente manera:
@if (auth()->check()) @php $user_auth_data = [ 'isLoggedin' => true, 'user' => Auth::user() ]; @endphp @else @php $user_auth_data = [ 'isLoggedin' => false ]; @endphp @endifTengo
<meta name="csrf-token" content="{{ csrf_token() }}"> Y en cada solicitud de interfaz, hay un valor X-CSRF-TOKEN , pero no se está autenticando.
Ofc, estoy usando antes de la solicitud de inicio de sesión.
.get("/sanctum/csrf-cookie")Y en el middleware API tengo VerifyCsrfToken.
Así es como se ve mi controlador de inicio de sesión:
public function login(AuthRequest $request): AuthResource { $auth = Auth::user(); $token = $auth->createToken('auth')->plainTextToken; $auth->setAttribute('token', $token); ProcessUserDevice::dispatch($auth->id, $_SERVER, $token); return new AuthResource($auth); }¿Cómo podría autenticar al usuario en la interfaz de vue y en la hoja principal? ¿Es posible?
CSRF es para las solicitudes http. Quiero decir, lo necesitarás cuando envíes un from en Blade.
Para llamadas API, necesita autenticación basada en token, que es lo que proporciona Sanctum. Si usa axios para hacer llamadas a la API, puede usar las siguientes líneas para configurarlo correctamente.
window.axios = require('axios'); window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; axios.defaults.withCredentials = true;Supongo que la configuración de Sanctum no tiene ningún problema.