使用 Laravel Sanctum 实现高效身份验证

在当今的Web开发中,身份验证是不可或缺的一环。Laravel作为PHP领域最受欢迎的框架之一,提供了多种身份验证解决方案。其中,Laravel Sanctum以其简洁高效的特点,逐渐成为开发者们的首选。本文将带你深入了解如何使用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开发效率。如果你有任何问题或建议,欢迎在评论区留言交流!

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读