Laravel 7 - использовать REST API вместо базы данных - PullRequest
0 голосов
/ 01 апреля 2020

Я использую api rest для хранения / извлечения моих данных, которые хранятся в базе данных postgres. API не laravel, это внешний сервис!

Теперь я хочу создать сайт с laravel (версия фреймворка 7.3.0), и я застрял на том, как правильно реализовать вызовы API .

Например: я хочу, чтобы у меня был пользовательский провайдер, с помощью которого пользователи могут войти на сайт. Но проверка предоставленных учетных данных выполняется API, а не laravel.

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Просто создайте контроллер регистрации и контроллер входа в систему с помощью php artisan make: имя_контроллера контроллера и запишите там логику аутентификации.

В предыдущих версиях Laravel у вас была команда типа "php artisan make: auth", которая сделает все необходимое для выполнения этих операций. Но в Laravel 7.0 вам нужно установить пакет с именем laravel / ui.

Запустите "composer required laravel/ui" для установки этого пакета. Затем запустите "php artisan ui bootstrap --auth" и теперь вы можете запустить "php artisan make: auth"

Эта команда сделает всю систему регистрации (регистрации) и входа в систему за вас.

и чтобы работать с REST, вам может понадобиться знать глаголы REST (Http). Узнайте о запросах GET, POST, PUT, PATH, DELETE и о том, как сделать эти запросы с помощью методов сбора PHP и Laravel. Узнайте о JSON разборе, кодировании и декодировании. Тогда вы можете легко работать с REST. и работать без каких-либо шаблонов кодов из других пакетов.

Большое вам спасибо. Я надеюсь, что этот ответ даст вам новую информацию / мысли. Еще раз спасибо.

0 голосов
/ 01 апреля 2020

Редактировать:

Это может быть не лучшим способом. Но это то, что я сделал в то время. Я попытался с помощью curl и guzzle построить запрос с сеансом cook ie и всем в шапке, чтобы он выглядел как запрос из веб-браузера. Не удалось заставить его работать.

Я использовал идентификатор канала веб-сокета для браузера. Я хочу, чтобы изменения произошли, и связал его с другими вещами, затем зашифровал его с помощью encrypt($string). После этого я использовал зашифрованную строку для генерации QR-кода.

Мобильное приложение (которое уже вошло в систему как использованное для аутентификации) отсканировало его и отправило запрос с этой строкой QR и другими данными. Паспорт позаботился об аутентификации части этого запроса. После расшифровки строки QR у меня был идентификатор канала веб-сокета.

Затем я транслировал в этом канале правильные событие и данные . Поймал эту трансляцию в браузере и перезагрузил эту страницу с JavaScript.

/*... processing other data ...*/     
$broadcastService = new BroadcastService();
$broadcastService->trigger($channelId, $eventName, encrypt($$data));
/*... returned response to the mobile app...*/

My BroadcastService:

namespace App\Services;

use Illuminate\Support\Facades\Log;
use Pusher\Pusher;
use Pusher\PusherException;

class BroadcastService {
    public $broadcast = null;

    public function __construct() {
        $config = config('broadcasting.connections.pusher');
        try {
            $this->broadcast = new Pusher($config['key'], $config['secret'], $config['app_id'], $config['options']);
        } catch (PusherException $e) {
            Log::info($e->getMessage());
        }
    }

    public function trigger($channel, $event, $data) {
        $this->broadcast->trigger($channel, $event, $data);
    }
}

На мой взгляд:

<script src="{{asset('assets/js/pusher.js')}}"></script>
<script src="{{asset('assets/js/app.js')}}" ></script>
<script>
    <?php
    use Illuminate\Support\Facades\Cookie;
    $channel = 'Channel id';
    ?>
    Echo.channel('{{$channel}}')
        .listen('.myEvent' , data => {
            // processing data
            window.location.reload();
        });
</script>

I Для этого использовали Laravel Эхо .

Опять же, это не лучший способ сделать это. Это то, что мне подходит для этой конкретной функции.

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


Насколько я понимаю, вы хотите реализовать создание пользователей и аутентификацию через REST. А затем получить данные из базы данных. Поправьте меня, если я ошибаюсь.

И я предполагаю, что вы уже знаете, как общаться через API с помощью токена. Вы просто знаете, как реализовать это с laravel.

. Вы можете использовать Laravel Passport для аутентификации. У него действительно хорошая документация .

Также воспользуйтесь этой средней статьей . Это поможет вам go в пошаговом процессе.

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