sonmez/laravel-passport-auth

此软件包最新版本(dev-master)没有提供许可证信息。

为API提供护照认证的软件包

dev-master 2021-01-02 16:55 UTC

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请求来测试