Laravel sanctum authentication with refresh token
composer require larahook/sanctum-refresh-token
- Add Trait in
User
model class.
use Larahook\SanctumRefreshToken\Trait\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens;
}
- Add
SanctumRefreshTokenServiceProvider
in config/app.php
'providers' => ServiceProvider::defaultProviders()->merge([
//...
EventServiceProvider::class,
RouteServiceProvider::class,
SanctumRefreshTokenServiceProvider::class,
])->toArray(),
- You can also publish the config file to change implementations
php artisan vendor:publish --provider="Larahook\SanctumRefreshToken\SanctumRefreshTokenServiceProvider" --tag=config
php artisan vendor:publish --provider="Larahook\SanctumRefreshToken\SanctumRefreshTokenServiceProvider" --tag=migrations
php artisan migrate
createTokenPair
- create access_token
and refresh_token
refreshTokenPair
- unlink current token pair and create new access_token
and refresh_token
logoutTokenPair
- unlink current token pair
use Larahook\SanctumRefreshToken\Trait\AuthTokens;
class SomeClass
{
use AuthTokens;
public function login(string $email, string $password, string $deviceName): array
{
$user = User::whereEmail($email)->first();
// ...some login pass validation
return $this->createTokenPair($user, $deviceName);
}
/**
* @param User $user
*
* @return array
*/
public function refresh(User $user): array
{
return $this->refreshTokenPair($user);
}
/**
* @param User $user
*
* @return bool
*/
public function logout(User $user): bool
{
return $this->logoutTokenPair($user);
}
}