首页 > php框架 > Laravel > 正文

Laravel怎么为API接口配置Sanctum认证

裘德小鎮的故事
发布: 2025-11-13 19:50:03
原创
214人浏览过
安装并配置Sanctum:通过Composer安装,发布迁移并执行;用户模型引入HasApiTokens;API路由使用auth:sanctum中间件保护;登录接口生成Token;前端在请求头Authorization: Bearer中携带Token即可完成认证。

laravel怎么为api接口配置sanctum认证

在Laravel中为API接口配置Sanctum认证,主要是通过安装和初始化Laravel Sanctum组件,生成用户Token并用于请求身份验证。整个过程不复杂,但需要注意中间件和配置的细节。

安装并配置Sanctum

使用Composer安装Laravel Sanctum:

composer require laravel/sanctum

发布Sanctum的迁移文件并执行数据库迁移:

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate

这会创建一个personal_access_tokens表,用于存储用户生成的API Token。

配置用户模型支持Token

确保你的用户模型(通常是App\Models\User)引入了HasApiTokens trait:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens;
    // ...
}

这个trait提供了创建、管理Token的方法,比如createToken()

设置API路由中间件

Laravel Sanctum通过sanctum.auth中间件来验证Token。在routes/api.php中,将需要保护的路由包裹在该中间件下:

琅琅配音
琅琅配音

全能AI配音神器

琅琅配音 208
查看详情 琅琅配音
use Illuminate\Http\Request;

Route::middleware('auth:sanctum')->group(function () {
    Route::get('/user', function (Request $request) {
        return $request->user();
    });
});

这样只有携带有效Token的请求才能访问这些接口。

前端获取并使用Token

客户端首先需要通过登录接口获取Token。你可以写一个简单的登录API:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

public function login(Request $request)
{
    if (Auth::attempt($request->only('email', 'password'))) {
        $user = Auth::user();
        $token = $user->createToken('api-token')->plainTextToken;
        return response()->json(['token' => $token]);
    }
    return response()->json(['error' => 'Unauthorized'], 401);
}

前端拿到token后,在后续请求中通过Authorization头发送:

Authorization: Bearer your-sanctum-token-here

注意:Sanctum默认接受Bearer类型的Token,即使它不是JWT。

基本上就这些。只要正确安装、配置中间件,并在请求中带上Token,就可以实现API的身份验证。适合前后端分离或移动端调用的场景,简单又安全。

以上就是Laravel怎么为API接口配置Sanctum认证的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号