0

0

Laravel Sanctum API认证怎么用_Laravel前后端分离认证实现

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-11-28 09:58:53

|

196人浏览过

|

来源于php中文网

原创

Laravel Sanctum通过API Token实现前后端分离认证,首先安装并发布迁移文件,执行php artisan migrate创建personal_access_tokens表,确保Kernel.php中注册EnsureFrontendRequestsAreStateful中间件;接着在User模型引入HasApiTokens trait以支持Token生成;配置auth.php中api守卫驱动为sanctum;创建登录接口验证用户并调用createToken返回plainTextToken;前端存储Token并在请求头携带Bearer令牌;使用auth:sanctum中间件保护API路由;退出时调用currentAccessToken()->delete()注销当前Token;推荐前端用Axios设置默认Authorization头,401时跳转登录。

laravel sanctum api认证怎么用_laravel前后端分离认证实现

Laravel Sanctum 是 Laravel 提供的一种轻量级 API 认证机制,特别适合用于前后端分离项目中的用户登录与状态管理。它通过为用户发放 API Token 的方式实现认证,也可以结合 SPA(单页应用)的会话机制来保护路由。下面介绍如何使用 Laravel Sanctum 实现前后端分离的认证流程。

1. 安装和配置 Sanctum

在 Laravel 项目中安装 Sanctum 非常简单:

  • 运行命令:composer require laravel/sanctum
  • 发布迁移文件:php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
  • 执行迁移:php artisan migrate

完成后,Sanctum 会在数据库中创建 personal_access_tokens 表,用于存储用户生成的 Token。

app/Http/Kernel.php 中,确保 EnsureFrontendRequestsAreStateful 中间件已注册在 api 组中,它允许来自前端域名的请求保持会话状态(适用于 SPA 场景)。

2. 启用模型 Token 支持

默认情况下,User 模型需要使用 HasApiTokens trait 来支持 Sanctum 的 token 认证:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens;
}

这样该模型就可以生成和管理 API Token。

3. 配置认证守卫

打开 config/auth.php,确认 API 认证守卫使用的是 Sanctum:

'guards' => [
    'api' => [
        'driver' => 'sanctum',
        'provider' => 'users',
    ],
],

这表示所有带 token 的 API 请求将由 Sanctum 处理。

mallcloud商城
mallcloud商城

mallcloud商城基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离vue的企业级微服务敏捷开发系统架构。并引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提

下载

4. 登录接口:生成 Token

创建一个登录接口,验证用户后返回登录状态或 Token。例如在控制器中:

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

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        $user = Auth::user();
        $token = $user->createToken('api-token')->plainTextToken;
        
        return response()->json([
            'message' => '登录成功',
            'token' => $token,
            'user' => $user
        ]);
    }

    return response()->json(['message' => '账号或密码错误'], 401);
}

前端拿到 token 后,在后续请求的 Authorization 头中携带:

Bearer 1|xyz...

5. 保护 API 路由

routes/api.php 中使用 sanctum.auth 中间件保护需要认证的接口:

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

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

6. 退出登录:注销 Token

用户退出时,可以销毁当前使用的 Token:

public function logout(Request $request)
{
    $request->user()->currentAccessToken()->delete();

    return response()->json(['message' => '已退出']);
}

如果想删除所有 Token,可调用:$request->user()->tokens()->delete();

7. 前端配合建议

  • 登录成功后,前端将 Token 存入内存或 localStorage,并在每次请求头中添加 Authorization: Bearer [token]
  • 推荐使用 Axios 设置默认 header:
    axios.defaults.headers.common['Authorization'] = 'Bearer ' + token;
  • 遇到 401 错误时跳转到登录页

基本上就这些。Laravel Sanctum 简洁高效,特别适合 Vue/React + Laravel 的前后端分离项目。它既支持无状态 Token 认证,也能配合 Session 实现更安全的 SPA 登录体验。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2544

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1610

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1500

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1417

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1446

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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