版权信息
(本文地址:https://www.nzw6.com/41976.html)
在 Laravel 中生成令牌通常与 API 认证相关,最常用的方法是使用 Laravel Passport 或 Laravel Sanctum。以下是使用这两种方式生成令牌的简单介绍:
使用 Laravel Sanctum
Laravel Sanctum 是一个轻量级的认证包,适用于构建 SPA(单页应用)、移动应用和简单的 API。
安装 Sanctum
-
安装 Sanctum 包:
composer require laravel/sanctum
-
发布配置文件和迁移文件:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider" php artisan migrate
-
在
User
模型中使用HasApiTokens
trait:use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; }
-
在
AppServiceProvider
中注册 Sanctum 中间件(如果需要):
通常,你需要在config/sanctum.php
中配置中间件,但 Laravel 会在安装时自动设置一些默认行为。
生成令牌
在控制器中,你可以通过以下方式为用户生成令牌:
use Illuminate\Http\Request;
use App\Models\User;
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('YourAppName')->plainTextToken;
return response()->json(['token' => $token]);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
使用 Laravel Passport
Laravel Passport 是一个功能更全面的 OAuth2 服务器实现,适用于需要完整 OAuth2 功能的项目。
安装 Passport
-
安装 Passport 包:
composer require laravel/passport
-
运行安装命令:
php artisan passport:install
该命令会创建用于存储 OAuth2 客户端和访问令牌的数据库表,并生成加密密钥。
-
在
User
模型中使用HasApiTokens
trait(对于 Access Token)或使用Laravel\Passport\HasApiTokens
(具体实现可能略有不同):use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasApiTokens, Notifiable; }
-
在
AuthServiceProvider
中注册 Passport 路由:use Laravel\Passport\Passport; public function boot() { $this->registerPolicies(); Passport::routes(); }
生成令牌
与 Sanctum 类似,你可以在控制器中为用户生成令牌:
use Illuminate\Http\Request;
use App\Models\User;
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('YourAppName')->accessToken;
return response()->json(['token' => $token]);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
注意事项
- 选择包:如果你的应用需要简单的 API 认证,Sanctum 是一个很好的选择。如果需要完整的 OAuth2 功能,比如第三方应用接入,那么 Passport 更适合。
- 安全性:确保在生产环境中使用 HTTPS,以保护令牌的安全。
- 令牌过期:根据需要设置令牌的过期时间,以提高安全性。
希望这些信息能帮助你在 Laravel 中生成令牌!