使用 Laravel Sanctum 实现 API 认证

在当今的互联网时代,API 认证是保障数据安全的重要环节。Laravel Sanctum 提供了一种简单而强大的方式来实现 API 认证。本文将详细介绍如何使用 Laravel Sanctum 进行 API 认证,从安装配置到实际应用,带你一步步掌握这一技术。

使用 Laravel Sanctum 实现 API 认证

安装与配置

首先,确保你已经安装了 Laravel。接下来,通过以下命令安装 Laravel Sanctum:

composer require laravel/sanctum

安装完成后,需要在 config/app.php 文件中注册 Sanctum 服务提供者:

'providers' => [
    // 其他服务提供者
    Laravel\Sanctum\SanctumServiceProvider::class,
],

此外,还需要发布 Sanctum 的配置文件和迁移文件:

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

在 config/sanctum.php 文件中,可以配置 Sanctum 的各项参数,例如令牌过期时间等。

用户模型配置

为了让 Sanctum 正常工作,需要在用户模型中引入 HasApiTokens trait:

use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

这样,用户模型就具备了管理 API 令牌的能力。

路由与控制器

接下来,定义一个简单的 API 路由,用于用户登录和获取用户信息:

Route::post('/login', 'AuthController@login');
Route::middleware('auth:sanctum')->get('/user', 'AuthController@user');

创建 AuthController 控制器,并添加登录和获取用户信息的方法:

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

class AuthController extends Controller
{
    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(['message' => 'Unauthorized'], 401);
    }

    public function user(Request $request)
    {
        return response()->json($request->user());
    }
}

在 login 方法中,验证用户凭证,如果验证成功,则创建一个 API 令牌并返回。在 user 方法中,返回当前认证用户的信息。

前端集成

在前端,可以使用 Axios 等库来发送请求。以下是一个简单的示例:

// 登录
axios.post('/login', {
    email: 'user@example.com',
    password: 'password'
}).then(response => {
    localStorage.setItem('token', response.data.token);
}).catch(error => {
    console.error('登录失败', error);
});

// 获取用户信息
axios.get('/user', {
    headers: {
        Authorization: `Bearer ${localStorage.getItem('token')}`
    }
}).then(response => {
    console.log('用户信息', response.data);
}).catch(error => {
    console.error('获取用户信息失败', error);
});

安全性考虑

虽然 Sanctum 提供了便捷的 API 认证方式,但在实际应用中仍需注意以下几点:

  1. 令牌过期:合理设置令牌过期时间,避免长时间未登录的用户继续访问。
  2. HTTPS:确保 API 请求通过 HTTPS 进行,防止中间人攻击。
  3. 权限控制:根据业务需求,对不同的 API 接口进行权限控制。

总结

通过本文的介绍,相信你已经掌握了如何使用 Laravel Sanctum 进行 API 认证。Sanctum 的简洁性和强大功能使其成为 Laravel 项目中实现 API 认证的首选方案。希望这篇文章能为你在实际项目中应用 Sanctum 提供帮助。开始动手实践吧,让你的 API 认证更加安全可靠!

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

相关推荐

php实时推送,php实地培训

2026年10月05日

57阅读

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

2026年10月05日

50阅读

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

2026年10月05日

52阅读

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

2026年10月05日

56阅读

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

2026年10月05日

54阅读

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

2026年10月05日

47阅读