Symfony 4 API Platform и JWT: как войти в API с клиентским проектом Symfony?

Я работаю над проектом платформы API Symfony 4 и имею клиентский проект Symfony 4, с которым я хочу войти в API. Я использую жужжание для доступа к ресурсам API.

Вот, например, реализованный мной GuzzleTrait:

<?php
/**
 * Created by PhpStorm.
 * User: simslay
 * Date: 15/12/2018
 * Time: 15:29
 */

namespace App\Controller;


use GuzzleHttp\Client;

trait GuzzleTrait
{
    private $client;

    public function __construct()
    {
        $this->client = new Client([
            'base_uri' => 'http://127.0.0.1:8001'
        ]);
    }

    private function getContent(string $finUri) {
        $content = null;

        try {
            $dataContent = $this->client->request('GET', 'api/'.$finUri);
            $content = json_decode($dataContent->getBody()->getContents(), true);
        } catch(\GuzzleHttp\Exception\GuzzleException $e) {
            $this->addFlash(
                'danger',
                $e->getMessage()
            );
        }

        return $content;
    }
}

Я работаю над этим руководством: Внедрение аутентификации JWT в ваше приложение платформы API

и использовать ту же логику в моем API.

Кроме того, вот мой клиент security.yaml:

security:
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    encoders:
        App\Entity\User: bcrypt
    providers:
        in_memory: { memory: ~ }
        user_provider:
            entity:
                class: App\Entity\User
                property: surnom
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true

            # activate different ways to authenticate

            # http_basic: true
            # https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate

            # form_login: true
            # https://symfony.com/doc/current/security/form_login_setup.html

            form_login:
                login_path: security_connexion
                check_path: security_connexion
                username_parameter: _surnom
                password_parameter: _password
                default_target_path: index
            provider: user_provider
            logout:
                path: /deconnexion
                target: /

    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        - { path: ^/admin, roles: [ROLE_ADMIN, ROLE_SUPER_ADMIN] }
        # - { path: ^/profile, roles: ROLE_USER }
    role_hierarchy:
        ROLE_ADMIN: ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

У меня есть база данных API с сущностью User.

Обязательно ли иметь объект User на стороне клиента?

В curl для входа в систему у меня есть команда:

curl -X POST -H "Content-Type: application/json" http://localhost:8000/login_check -d '{"username":"johndoe","password":"test"}'

Как войти в API из клиента Symfony 4?

Вам действительно нужно иметь валидный токен JWT, который вы собираетесь использовать в качестве ключа, позволяющего аутентифицироваться, вам необходимо настроить брандмауэр api и раздел защиты, как это упоминается в туто. Вы можете работать с любым jwt php beblio. вам не обязательно иметь объект User на стороне клиента, но рекомендуется создать javascript dto, в котором вы можете привязать свои данные.

famas23 19.12.2018 17:01

Спасибо за ваш ответ. Я немного понимаю, что вы говорите. Но где мне кодировать свой запрос http://localhost:8000/login_check на стороне клиента? Может быть, в действии контроллера для входа в систему? У вас есть пример кода?

simslay 19.12.2018 17:39

хм, но обычно вы создаете API, так что вы, вероятно, являетесь клиентской стороной, чтобы потреблять apy, где вы хотите вызвать login_check bah voila

famas23 19.12.2018 18:34
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как создать простое погодное приложение на Python с API OpenWeatherMap
Как создать простое погодное приложение на Python с API OpenWeatherMap
Этот учебник проведет вас через процесс создания простого погодного приложения с помощью Python и OpenWeatherMap API.
Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
В этом руководстве вы узнаете, как использовать API парсинга квитанций за 5 минут с помощью JavaScript. Eden AI предоставляет простой и удобный для...
0
3
1 631
1

Ответы 1

Я смог реализовать аутентификацию клиента после этого пример кода из этого руководство:.

Другие вопросы по теме