#laravel #api #vue.js
#laravel #API #vue.js
Вопрос:
У меня есть приложение Laravel с VUEJS в качестве интерфейса, я получаю данные путем создания маршрутов API. Так, например, маршрут для получения данных posts будетhttp://localhost/api/posts
Каков наилучший способ защитить мои маршруты?
Я видел в документации laravel, что есть: Проверка API https://laravel.com/docs/5.8/api-authentication также паспорт https://laravel.com/docs/5.8/passport
Например, теперь любой пользователь может получить доступ к маршрутуhttp://localhost/api/posts и он получит json со всеми данными posts.
Я хочу защитить это и разрешить только внутренний запрос API от моего компонента VUEJS для получения данных
Ответ №1:
Я предполагаю, что вы собираетесь использовать маршруты аутентификации Laravel для аутентификации, и после аутентификации следующее представление, к которому вы перейдете, — это представление со всеми компонентами Vue.
Решение простое, даже в документации должны быть разъяснены необходимые шаги.
Нам нужно:
- Добавить паспорт
composer require laravel/passport
- Выполните миграции
php artisan migrate
- Установить паспорт
php artisan passport:install
Четвертый шаг более сложный. Нам нужно открыть наш User.php файл модели. И сначала нам нужно импортировать HasApiTokens и указать модели использовать его.
use LaravelPassportHasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
.......
}
Затем на нашем config/auth.php
нам нужно изменить массив api и изменить драйвер на passport
'api' => [
//for API authentication with Passport
'driver' => 'passport',
'provider' => 'users',
],
Затем на нашем app/Http/Kernel.php
нам нужно добавить промежуточное программное обеспечение к $middlewareGroups
массиву в ключе web
.
protected $middlewareGroups = [
'web' => [
................
//for API authentication with Passport
LaravelPassportHttpMiddlewareCreateFreshApiToken::class,
],
Теперь мы можем использовать auth:api
промежуточное программное обеспечение для наших маршрутов API.
Route::middleware('auth:api')->group( function(){
...your routes here
});
Ответ №2:
Это то, что делает токен CSRF, это не совсем то же самое, что делает авторизация API
Токен CSRF:
Для защиты (внутренней) API или точки доступа от межсайтового доступа, см. Межсайтовый запрос_forgery
Срок действия токена CSRF истек, и он генерируется случайным образом, что затрудняет доступ к программе
Авторизация API:
API разработан для использования в других программах, и вы хотели бы защитить их от несанкционированного доступа
Поскольку истечение срока действия и генерация токенов API обрабатываются администратором вручную, поскольку вам нужно будет поместить этот токен API в свой HTML, чтобы заставить вашу функцию работать, это не то, что вы ищете здесь
Более подробную информацию о защите CSRF в Laravel смотрите в: Рабочий документ Laravel CSRF
Как правило, мы защищаем все маршруты POST и УСТАНАВЛИВАЕМ маршруты по умолчанию