Laravel API认证推荐使用Token机制,通过配置auth:api中间件和token驱动实现;用户登录后生成唯一api_token并返回,客户端在后续请求中携带Bearer Token;为提升安全,应启用HTTPS、设置Token过期时间、限制IP或用户代理,并优先选用Sanctum(适合简单场景)或Passport(支持OAuth2、第三方集成)以获得更完善的权限管理功能。

Laravel API认证的核心在于确保只有授权用户才能访问你的API。Token认证是一种常见的实现方式,它允许客户端在每次请求时携带一个令牌,服务器验证令牌的有效性来决定是否允许访问。
解决方案:
选择认证驱动: Laravel默认提供多种认证驱动,例如
token
passport
sanctum
passport
sanctum
token
token
配置config/auth.php
guards
token
providers
'guards' => [
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
],hash
false
修改User模型: 在
User
api_token
Schema::table('users', function (Blueprint $table) {
$table->string('api_token', 80)->after('password')
->unique()
->nullable()
->default(Str::random(60));
});这里使用了
Str::random(60)
生成Token: 用户注册或登录后,为其生成一个
api_token
public function register(Request $request)
{
// ... 验证逻辑 ...
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'api_token' => Str::random(60),
]);
return response()->json(['api_token' => $user->api_token]);
}使用中间件: Laravel提供了
auth:api
routes/api.php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});客户端请求: 客户端在请求API时,需要在header中携带
Authorization
Bearer {api_token}Authorization: Bearer your_api_token
处理Token过期: 简单的Token认证没有过期机制。如果要实现Token过期,可以考虑以下方案:
users
token_expires_at
Laravel Sanctum和Passport提供了更完善的Token管理机制,包括Token的scopes、过期时间、刷新Token等功能。如果你的应用需要更复杂的API认证,建议使用这两个包。
Token认证的安全性取决于Token的保密性。请务必使用HTTPS协议来保护Token在传输过程中的安全。
Laravel Sanctum和Passport的区别?
Sanctum主要用于单页面应用(SPA)、移动应用和简单的API认证。它使用轻量级的Token,存储在数据库中,可以轻松地为用户生成多个Token,并可以为每个Token分配不同的权限。Sanctum的核心优势在于其简单易用,配置简单,适用于大多数小型和中型项目。
Passport则是OAuth 2.0的完整实现,提供了更强大的功能,例如授权码、客户端凭据、隐式授权等。Passport适用于需要与第三方应用集成的场景,例如,允许其他应用访问你的API。Passport的配置相对复杂,但提供了更高级的功能,例如Token的scopes、刷新Token等。
简单来说,如果你的应用只需要简单的API认证,Sanctum是一个不错的选择。如果你的应用需要与第三方应用集成,Passport则是更好的选择。
如何防止Token被盗用?
防止Token被盗用是一个安全问题,没有绝对安全的方案,但可以采取以下措施来降低风险:
选择哪种认证方式更好?
选择哪种认证方式取决于你的具体需求。以下是一些常见的认证方式及其适用场景:
如果你只需要简单的API认证,Token Auth是一个不错的选择。如果你的应用需要与第三方应用集成,OAuth 2.0则是更好的选择。如果你需要构建分布式系统和微服务架构,JWT则是一个不错的选择。
以上就是Laravel API认证?Token认证怎样实现?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号