1. 什么是 Laravel Passport
Laravel Passport 是 Laravel 社区提供的一款用于实现 OAuth2.0 授权服务器的扩展包。OAuth2.0 是一种授权框架,允许用户通过第三方应用程序访问受保护的资源,而无需和这些资源共享凭证。
2. Laravel Passport 的安装
2.1. 安装 Passport
要开始使用 Laravel Passport,首先需要通过 Composer 安装扩展包。
composer require laravel/passport
2.2. 执行迁移
安装完成后,需要通过执行迁移命令来创建 Passport 相关的数据库表。
php artisan migrate
3. 配置 Laravel Passport
3.1. 配置 Auth 驱动
打开 `config/auth.php` 文件,将 `api` 驱动的 `driver` 配置为 `passport`。
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
3.2. 注册 Passport 路由
在 `AuthServiceProvider` 中的 `boot` 方法中注册 Passport 的路由。
use Laravel\Passport\Passport;
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
3.3. 创建加密密钥
生成加密密钥用于签署令牌。可以使用以下命令进行生成:
php artisan passport:install
执行该命令后,会生成两个加密密钥:`id_rsa` 和 `id_rsa.pub`。
4. 创建 Passport 控制器
4.1. 创建控制器
使用以下命令创建 Passport 控制器:
php artisan make:controller PassportController
4.2. 编写控制器代码
在刚创建的控制器中,可以编写登录和注册等方法。例如,可以编写一个 `login` 方法来处理用户的登录请求。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PassportController extends Controller
{
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('MyApp')->accessToken;
return response()->json(['token' => $token], 200);
} else {
return response()->json(['errors' => 'Unauthorized'], 401);
}
}
}
4.3. 注册路由
在 `routes/api.php` 文件中注册登录和注册等路由:
use App\Http\Controllers\PassportController;
use Illuminate\Support\Facades\Route;
Route::post('login', [PassportController::class, 'login']);
// Other routes...
5. 使用 Laravel Passport 进行授权
使用 Laravel Passport 进行授权非常简单,只需在请求头中添加 `Authorization` 字段,并将令牌以 `Bearer` 方式发送即可。
Authorization: Bearer <access_token>
在需要进行授权的路由或方法中,可以使用 Laravel 自带的 `auth:api` 中间件进行验证:
Route::get('profile', function () {
// Only authenticated users can access this route
})->middleware('auth:api');
6. 结语
通过上述步骤,我们成功地安装并使用了 Laravel Passport 进行 PHP 安全验证。Laravel Passport 提供了一种方便的方式来实现 OAuth2.0 授权服务器,并能够轻松地集成到 Laravel 项目中。
通过使用 Passport,我们可以轻松地创建和管理访问令牌,以实现用户验证和授权功能,从而保护我们的应用程序和用户数据的安全。
注意:在实际开发中,请根据具体的业务需求和安全要求进行适当的配置和调整,以确保应用程序的安全性。