Login unico utilizando o sanctum
Ola, estou com uma duvida.
Tentei aplicar esta implementação da aula
Aula: 08 - Login Único no Laravel 8
em uma api com sanctum, mas não esta dando certo
depois de autenticado pela Api quando tento acessar qualquer rota protegida pelo middleware : auth:sanctum estou recebendo este erro :
"message": "Method Illuminate\\Auth\\RequestGuard::viaRemember does not exist.",
existe alguma forma de contonar isso ou não é possivvel usar esta feature :
Auth::logoutOtherDevices()
no sanctum?
Obrigado!
Olá, Carlos!
Tudo bem?
Esse logout usa sessão para controlar a autenticação, e autenticação de APIs (uma caracteristica do protocolo http) não armazena estado (não guarda sessão)
---
Agora, como o Sanctum trabalha com tokens, é bem fácil resolver isso.
Como?
Basta deletar os outros tokens do usuário, pimba!
public function auth(Request $request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
'device_name' => 'required',
]);
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
throw ValidationException::withMessages([
'email' => ['The provided credentials are incorrect.'],
]);
}
// Deleta os outros tokens do usuário
$user->tokens()->delete();
return response()->json([
'token' => $user->createToken($request->device_name)->plainTextToken
], 201);
}
Obrigado, pela resposta, vou testar aqui!
Boa tarde, existe algum maneira de escultar o evento de login feito sanctum, estou tentando gerar um log de acessos do usuario pela Api porem não consigo saber qual evento escultar para pegar esta informação.
Você até pode disparar um evento no auth que criamos, de forma manual;
Mas, você também usar os eventos de default de autenticação do Laravel, vai funcionar da mesma forma.
https://laravel.com/docs/8.x/authentication#events
Se tiver alguma dúvida de como implementar, me retorna que te ajudo. Beleza?
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!