使用 Laravel Sanctum 实现高效身份验证
在当今的Web开发中,身份验证是不可或缺的一环。Laravel作为PHP领域最受欢迎的框架之一,提供了多种身份验证解决方案。其中,Laravel Sanctum以其简洁高效的特点,逐渐成为开发者们的首选。本文将带你深入了解如何使用Laravel Sanctum进行身份验证。

什么是 Laravel Sanctum?
Laravel Sanctum是一个轻量级的身份验证系统,专为API和单页应用(SPA)设计。它基于Laravel的内置功能,提供了简单易用的API,使得开发者能够快速实现用户认证。
安装与配置
首先,确保你已经安装了Laravel。接下来,通过以下命令安装Sanctum:
composer require laravel/sanctum
安装完成后,需要运行迁移命令来创建必要的数据库表:
php artisan migrate
接下来,在config/app.php的providers数组中添加Sanctum的服务提供者:
'providers' => [
// 其他服务提供者
Laravel\Sanctum\SanctumServiceProvider::class,
],
最后,发布Sanctum的配置文件:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
用户模型配置
确保你的用户模型使用了HasApiTokens trait,这样用户才能生成和管理API令牌:
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
路由与控制器
接下来,定义路由并创建相应的控制器。以下是一个简单的示例,展示如何注册用户并生成API令牌:
// routes/web.php
Route::post('/register', 'AuthController@register');
Route::post('/login', 'AuthController@login');
// app/Http/Controllers/AuthController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
public function register(Request $request)
{
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
return response()->json(['token' => $user->createToken('api-token')->plainTextToken]);
}
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
return response()->json(['token' => $user->createToken('api-token')->plainTextToken]);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
}
保护路由
要保护API路由,可以使用auth:sanctum中间件。以下是一个示例:
// routes/api.php
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
这样,只有携带有效API令牌的请求才能访问该路由。
测试身份验证
使用Postman或其他API测试工具,向/register和/login发送请求,获取API令牌。然后,在请求头中添加Authorization: Bearer {token},尝试访问受保护的路由。
总结
Laravel Sanctum为开发者提供了一种简单而强大的身份验证解决方案。通过本文的介绍,你应该已经掌握了如何安装配置Sanctum、创建用户并生成API令牌、以及如何保护API路由。借助Sanctum,你可以轻松地为你的API或SPA应用添加高效的身份验证功能。
希望这篇文章能帮助你更好地理解和应用Laravel Sanctum,提升你的Web开发效率。如果你有任何问题或建议,欢迎在评论区留言交流!