sonmez / laravel-passport-auth
为API提供护照认证的软件包
Requires
- laravel/passport: ^10.1
- laravel/ui: ^3.1
This package is not auto-updated.
Last update: 2024-09-23 09:30:15 UTC
README
您可以使用此软件包在Laravel Passport包的基础上动态实现登录和认证功能。
要求
由于我们将使用Laravel的认证,我们首先需要安装laravel/ui软件包。
laravel/ui软件包
composer require laravel/ui
安装
1- 您可以通过composer安装此软件包
composer require sonmez/laravel-passport-auth
2- 安装成功后,请运行以下命令
如laravel/passport文档中所述(见此处 https://laravel.net.cn/docs/8.x/passport),安装软件包后,我们首先需要运行迁移
php artisan migrate
使用此命令,您将在数据库中拥有所有laravel/passport表(以oauth_为前缀)和用户表。现在,我们需要通过执行以下命令配置laravel/passport软件包
php artisan passport:install
此命令将在oauth_clients中生成2个令牌,对于我的情况,我有以下令牌
Personal access client created successfully.
Client ID: 1
Client secret: phNVmQWF0qxWrSw1thVzsx5B55w7Lm6cPUvDjgQo
Password grant client created successfully.
Client ID: 2
Client secret: srKHlpLcnyLaBhZmQsAIuztgY7C0N8gjZPFKjYgu
请复制第二个密钥,因为我们将要实现密码保护的认证
之后,我们需要通过将Laravel\Passport\HasApiTokens trait添加到其中来配置我们的User模型
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens; // <- HERE
class User extends Authenticatable
{
use Notifiable, HasApiTokens; // <- HERE
// ...
}
然后,我们需要将Passport::routes()添加到AuthServiceProvider的boot()函数中
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
use Laravel\Passport\Passport; // <- HERE
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes(); // <- HERE
}
}
然后我们将执行此命令,这将发布登录和认证控制器以及所需的中间件和路由到(api.php)路由文件中
php artisan laravel-passport-auth:publish
您会注意到,在您的app文件夹内创建了一个名为"Api\Auth"的文件夹,其中包含两个控制器
它们具有登录和注销以及验证令牌的功能
最后一件事情:记得我们复制了客户端2的密钥,您需要打开.env文件,将值复制到PASSPORT_CLIENT_SECRET字段,现在我们完成了,您可以通过postman测试它,例如通过向/api/login方法发送POST请求来测试