Подтвердить что ты не робот

Laravel 5.3 Passport Custom Grants?

Я знаю, что я не единственный человек, который подошел к этому вопросу. Кто-нибудь знает, как правильно реализовать пользовательский грант в Laravel (5.3) Passport?

или

У вас есть хорошая ссылка/учебник для ссылки, как правильно это сделать?

Я знаю этот пакет:

https://github.com/mikemclin/passport-custom-request-grant

Но я прошу более "сделать это самостоятельно".

Спасибо заранее.

4b9b3361

Ответ 1

namespace App\Providers;

use App\Auth\Grants\FacebookGrant;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Passport\Bridge\RefreshTokenRepository;
use Laravel\Passport\Passport;
use League\OAuth2\Server\AuthorizationServer;

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();

        app(AuthorizationServer::class)->enableGrantType(
            $this->makeFacebookGrant(), Passport::tokensExpireIn()
        );

        Passport::routes();

        //
    }

    /**
     * Create and configure a Facebook grant instance.
     *
     * @return FacebookGrant
     */
    protected function makeFacebookGrant()
    {
        $grant = new FacebookGrant(
            $this->app->make(RefreshTokenRepository::class)
        );

        $grant->setRefreshTokenTTL(Passport::refreshTokensExpireIn());

        return $grant;
    }
}

Ответ 2

Я не уверен, что вы подразумеваете под индивидуальным предоставлением, но вы можете использовать сервис паспорта для предоставления пароля, который можно настроить, как вам нравится.

Ссылка: https://laravel.com/docs/5.3/passport#password-grant-tokens

Чтобы дать больше информации, вы получите client_id и client_secret, которые будут использовать все пользователи вашего api, чтобы получить access_token и refresh_token, используя их пароль и адрес электронной почты, а затем вы можете настроить процесс, добавив функции через промежуточное ПО.

Например, вы можете проверить некоторые настроенные заголовки, если они есть или изменить базу данных на основе запроса, чтобы выполнить дальнейший запрос и т.д.

Возможно, у меня возникло неправильное представление о ваших проблемах, если в этом случае просьба указать больше о ваших потребностях.