使用 Laravel Sanctum 实现 API 认证
在当今的互联网时代,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 认证方式,但在实际应用中仍需注意以下几点:
- 令牌过期:合理设置令牌过期时间,避免长时间未登录的用户继续访问。
- HTTPS:确保 API 请求通过 HTTPS 进行,防止中间人攻击。
- 权限控制:根据业务需求,对不同的 API 接口进行权限控制。
总结
通过本文的介绍,相信你已经掌握了如何使用 Laravel Sanctum 进行 API 认证。Sanctum 的简洁性和强大功能使其成为 Laravel 项目中实现 API 认证的首选方案。希望这篇文章能为你在实际项目中应用 Sanctum 提供帮助。开始动手实践吧,让你的 API 认证更加安全可靠!
下一篇 »
PHP构建API驱动应用与前后端分离