


Laravel development: How to implement API authentication using Laravel Sanctum?
With the popularity of RESTful APIs and the widespread use of applications, more and more applications require authentication and authorization of APIs, so API security has become an extremely important aspect in today's software development. Laravel Sanctum is a lightweight authentication system introduced out of the box with Laravel 7.0, which is designed to make API authentication simple and secure. In this article, we will introduce how to use Sanctum in Laravel to ensure API security.
- Installing Laravel Sanctum
Before we begin, we need to confirm that Laravel 7.0 version has been installed. Then we can use composer to install Laravel Sanctum dependencies:
composer require laravel/sanctum
After installing Sanctum, add the following code to the config/app.php
file:
'providers' => [ // ... LaravelSanctumSanctumServiceProvider::class, ], 'aliases' => [ //... 'Sanctum' => LaravelSanctumSanctum::class, ]
In this way, Laravel The application already uses the services and functions provided by Sanctum.
- Configuring the database
Next, before performing database migration, we need to set up Sanctum’s database tables. Larav lSanctum provides a personal_access_tokens
database table by default that contains the following fields:
id
: The unique identifier of the tokentokenable_type
: The class name of the model associated with the tokentokenable_id
: The ID of the model associated with the tokenname
: The name of the tokentoken
: The value of the API tokenabilities
: The authorization of the token
Before creating the personal_access_tokens
table, we need to create the model relationship first. This can be done by registering the following in AuthServiceProvider
:
use LaravelSanctumSanctum; //... public function boot() { $this->registerPolicies(); Sanctum::ignoreMigrations(); Sanctum::actingAs( null, [ 'superuser' ]); }
Sanctum::ignoreMigrations()
is used to prevent Laravel from running the artisan migrate
command Execute Sanctum's database migration file. However, in most cases we just add it to the command of the database migration file. Sanctum::actingAs()
Also provides a development-only method that impersonates the user without user authentication.
Then we need to run the following command to create the personal_access_tokens
table:
php artisan migrate
- Create API Token
Laravel Sanctum is We provide two ways to generate tokens for the API. One is the CreateToken
method, which can create one or more API tokens with optional names and granted permissions. Here we introduce the second method, which is to use the hasApiTokens()
function with the createToken()
function:
// use the HasApiTokens trait within your User Model use LaravelSanctumHasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; // ... } // create a Token with User ID and given Abilities $personalAccessToken = $user->createToken('API Token', ['server:get','server:post']);
Here we use in the user model HasApiTokens
Trait to implement API token functionality in the user model. We use the createToken
method to create an API token and specify an optional name and authorized permission key when creating the token.
- Securing API Routes
With the API key in hand, we can inject it into every request for authentication. We can use sanctum
middleware in Laravel's routing file to protect the API route in order to verify the token in the request:
// A Group of API routes that require a valid Token Route::group(['middleware' => 'auth:sanctum'], function () { Route::get('/user', function (Request $request) { return $request->user(); }); });
In this code, we define a validation containing sanctum
Middleware routing group. A route group contains a route that only requires a valid Token to access.
- Using Bearer Token
Using Bearer
Token is the best way to send an API token via the HTTP Authorization
header Common methods. You can authorize the token by adding Authorization: Bearer {{$personalAccessToken->plainTextToken}}
to the request header:
curl -H "Authorization: Bearer xxxxx" http://example.com/api/user
- Revoke API token
Finally, we need to understand how to revoke API tokens. We can use the tokens()->delete()
function to delete all API tokens for a user, or use the revoke()
function to revoke a single API token:
$user->tokens()->delete(); $personalAccessToken->revoke();
Conclusion
Now we have successfully implemented Sanctum authentication to protect our API. Sanctum and Laravel provide simple yet powerful API authentication, which allows developers to focus on building powerful APIs and put the main focus on business logic. When using Sanctum, it is highly recommended that you carefully read the official documentation so that you can fully understand the API's authentication process and ensure the highest security for your application.
The above is the detailed content of Laravel development: How to implement API authentication using Laravel Sanctum?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Method for obtaining the return code when Laravel email sending fails. When using Laravel to develop applications, you often encounter situations where you need to send verification codes. And in reality...

The method of handling Laravel's email failure to send verification code is to use Laravel...

How to implement the table function of custom click to add data in dcatadmin (laravel-admin) When using dcat...

The impact of sharing of Redis connections in Laravel framework and select methods When using Laravel framework and Redis, developers may encounter a problem: through configuration...

Custom tenant database connection in Laravel multi-tenant extension package stancl/tenancy When building multi-tenant applications using Laravel multi-tenant extension package stancl/tenancy,...

LaravelEloquent Model Retrieval: Easily obtaining database data EloquentORM provides a concise and easy-to-understand way to operate the database. This article will introduce various Eloquent model search techniques in detail to help you obtain data from the database efficiently. 1. Get all records. Use the all() method to get all records in the database table: useApp\Models\Post;$posts=Post::all(); This will return a collection. You can access data using foreach loop or other collection methods: foreach($postsas$post){echo$post->

How to check the validity of Redis connections in Laravel6 projects is a common problem, especially when projects rely on Redis for business processing. The following is...

A problem of duplicate class definition during Laravel database migration occurs. When using the Laravel framework for database migration, developers may encounter "classes have been used...
