Как читать из базового проекта API через браузер в Laravel 5.6 - PullRequest
0 голосов
/ 06 октября 2018

Я могу использовать свой базовый проект API от Insomnia или Postman, но когда я хочу использовать его через Интернет и браузер, куда мне вставить Auth Key или Token?

Это мои коды контроллера:

public function show_user_list()
{
    return response()->json(User::all(), 200);
}

Маршрут:

Route::group(['middleware' => 'auth:api'], function() {
    Route::get('/users', 'UserController@show_user_list')->name('show_user_list');
});

и когда я хочу использовать его через Интернет и браузер, где я должен вставить ключ авторизации или токен?

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

Что я должен делать?

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

В дополнение к ответу Алекса, если вы хотите использовать встроенную защиту token, все, что вам нужно сделать, это добавить столбец api_token в таблицу пользователей следующим образом:

$table->string('api_token', 60)->unique()->nullable()->default(null);

Вот и все.Теперь вы можете просто использовать промежуточное программное обеспечение auth:api и отправить токен через а) в теле запроса как api_token, или 2) в заголовке bearer token или 3) в заголовке PHP_AUTH_PW.

Если вы хотите сгенерировать API-токен, просто добавьте метод, который генерирует уникальный для каждого пользователя, например, так:

public function generateApiKey(){
   do {
      $this->api_token = str_random(60);
   } while($this->where('api_token', $this->api_token)->exists());
   $this->save();
}

или вы также можете использовать Str::orderedUuid

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

0 голосов
/ 06 октября 2018

Вы должны установить Laravel Passport, чтобы использовать собственный API, не беспокоясь о токене:

composer require laravel/passport
add Passport::ignoreMigrations as per documentation
php artisan passport:install
add CreateFreshApiToken middleware

https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript

Если вы используете JQuery:

<script type="text/javascript">
      jQuery(function ($) {
      $.ajaxSetup({
          headers: {
              'X-Requested-With': 'XMLHttpRequest',
              'X-CSRF-TOKEN': '{{ csrf_token() }}'
          }
      });
      });
</script>

Если вы используете VueJs, все установлено на место

Если вы все еще хотите использовать TokenGuard, то вам нужно реализовать работу Passport: передать и получить доступ к токену API вбезопасный путь от внешнего интерфейса до внутреннего, назад и вперед

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