В этом уроке мы узнаем, как использовать laravel аутентификацию по паспорту в приложениях Laravel. Мы также будем использовать его. Сертификация паспорта Laravel Создайте простой продукт (создавайте, запрашивайте, обновляйте и удаляйте).
Laravel уже предоставляет традиционную проверку подлинности формы входа, но что, если вы хотите использовать API? API используют токены для аутентификации пользователей, поскольку они не используют сеансы. Когда пользователь входит в систему через API, создается токен и отправляется пользователю, который может быть использован для аутентификации. Laravel предоставляет Паспорт Аутентификацию API, которую можно использовать без каких-либо трудностей.
Давайте посмотрим, как настроить и настроить Паспорт уровня для аутентификации API и API RESTful в приложениях Laravel.
Создайте новое приложение
Давайте построим новый. Laravel Приложение. Выполните следующие команды, чтобы создать совершенно новое приложение laravel .
composer create-project --prefer-dist laravel/laravel passport
установить продление паспорта
Мы используем композитор установка Паспорт Расширение. Выполните следующую команду, чтобы установить расширение.
composer require laravel/passport
Laravel Для настройки Паспорта
Laravel Паспорт Расширение требует некоторой настройки.
Поставщик услуг
Что мы используем Laravel 5.6 В последней версии он может использовать обнаружение пакетов и автоматически регистрировать службы. Если вы используете Laravel 5.4 или ниже Вам необходимо быть в ____________ конфигурация/приложение. php В документе Паспорт Регистрационная служба. Вот и все. Это есть в этом файле. провайдеры Добавляют услуги регистрации в массив.
'providers' => [
....
Laravel\Passport\PassportServiceProvider::class,
]Миграция и установка
оставайтесь .env Установите учетные данные базы данных в файле. Laravel Passport предоставляет файлы миграции, необходимые для таблиц паспортов в нашей базе данных. Миграция паспортов используется для хранения токенов и информации о клиентах. Функция миграция Команда для переноса схемы в базу данных.
php artisan migrate
Затем вам необходимо установить, используя следующие команды Passport . Он генерирует ключ шифрования, необходимый для создания секретного маркера доступа.
php artisan passport:install
Конфигурация паспорта
На этом шаге нам нужно Laravel Изменить в приложении, чтобы заполнить Паспорт Для настройки.
app/User.php
В вашем Пользователе Добавьте в модель LaravelPassportHasApiTokens Трат. Это обеспечит некоторые вспомогательные методы.
AuthServiceProvider
оставайтесь AuthServiceProvider Добавьте метод загрузки Passport:: routes() Метод. Он генерирует необходимую маршрутизацию. Это app/Providers/AuthServiceProvider.php Как это выглядит после изменения.
'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}config/auth.php
В config/auth.php В файле установите для драйвера значение паспорт.
return [
....
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
....
]Создание маршрута
Давайте создадим маршрутизацию API, в routes/api.php Добавить маршрутизацию.
Route::post('login', '[email protected]');
Route::post('register', '[email protected]');
Route::middleware('auth:api')->group(function () {
Route::get('user', '[email protected]');
Route::resource('products', 'ProductController');
});Создание контроллера аутентификации
Давайте настроим логику аутентификации. Создайте контроллер паспорта, выполнив следующую команду.
php artisan make:controller PassportController
Скопируйте следующий код в app/Http/Controllers/PassportController.php
validate($request, [
'name' => 'required|min:3',
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password)
]);
$token = $user->createToken('TutsForWeb')->accessToken;
return response()->json(['token' => $token], 200);
}
/**
* Handles Login Request
*
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function login(Request $request)
{
$credentials = [
'email' => $request->email,
'password' => $request->password
];
if (auth()->attempt($credentials)) {
$token = auth()->user()->createToken('TutsForWeb')->accessToken;
return response()->json(['token' => $token], 200);
} else {
return response()->json(['error' => 'UnAuthorised'], 401);
}
}
/**
* Returns Authenticated User Details
*
* @return \Illuminate\Http\JsonResponse
*/
public function details()
{
return response()->json(['user' => auth()->user()], 200);
}
}Позвольте мне объяснить приведенный выше код.
В регистрация В методе мы проверяем данные запроса, а затем создаем пользователя. Мы используем метод createToken , который создает токен и передает имя в качестве параметра. Наконец, мы возвращаем токен в ответе JSON.
В логин В этом методе мы пытаемся аутентифицироваться с помощью параметров запроса. Затем возвращается соответствующий ответ в зависимости от успеха или неудачи попытки.
В подробности В этом методе мы возвращаем только модель пользователя.
Создать продукт СЫРОЙ
Давайте создадим продукт CRUD. Выполните следующие команды для создания моделей продуктов, файлов миграции и контроллеров.
php artisan make:model Product -mc
Это создаст новый файл миграции базы данных create_products_table.php (2) В случае ____________ база данных/миграции Папка. Будет вверх Метод обновлен до следующего кода.
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->string('name');
$table->integer('price');
$table->timestamps();
$table->foreign('user_id')
->references('id')
->on('users');
});
}Теперь добавьте заполняемый Атрибут в Продукт Модель. Откройте appy В папке Product.php Документация.
Теперь мы запускаем миграцию данных.
php artisan migrate
А теперь давайте побудем в ___________. app/User.php Добавьте метод ассоциации в файл.
public function products()
{
return $this->hasMany(Product::class);
}Откройте приложение/Http/Контроллеры В папке ProductController.php Документация. Скопируйте следующий код в контроллер продукта.
user()->products;
return response()->json([
'success' => true,
'data' => $products
]);
}
public function show($id)
{
$product = auth()->user()->products()->find($id);
if (!$product) {
return response()->json([
'success' => false,
'message' => 'Product with id ' . $id . ' not found'
], 400);
}
return response()->json([
'success' => true,
'data' => $product->toArray()
], 400);
}
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required',
'price' => 'required|integer'
]);
$product = new Product();
$product->name = $request->name;
$product->price = $request->price;
if (auth()->user()->products()->save($product))
return response()->json([
'success' => true,
'data' => $product->toArray()
]);
else
return response()->json([
'success' => false,
'message' => 'Product could not be added'
], 500);
}
public function update(Request $request, $id)
{
$product = auth()->user()->products()->find($id);
if (!$product) {
return response()->json([
'success' => false,
'message' => 'Product with id ' . $id . ' not found'
], 400);
}
$updated = $product->fill($request->all())->save();
if ($updated)
return response()->json([
'success' => true
]);
else
return response()->json([
'success' => false,
'message' => 'Product could not be updated'
], 500);
}
public function destroy($id)
{
$product = auth()->user()->products()->find($id);
if (!$product) {
return response()->json([
'success' => false,
'message' => 'Product with id ' . $id . ' not found'
], 400);
}
if ($product->delete()) {
return response()->json([
'success' => true
]);
} else {
return response()->json([
'success' => false,
'message' => 'Product could not be deleted'
], 500);
}
}
}тест
Теперь, когда наша логика завершена, давайте начнем тестирование. Мы протестируем его на сервере разработки PHP, но вы можете использовать виртуальный хост по мере необходимости. Выполните следующую команду, чтобы предоставить приложение на сервере разработки PHP.
php artisan serve
Теперь давайте протестируем наш API-почтальон с помощью тестового инструмента.
Интерфейс регистрации
Интерфейс Посадки
Интерфейс Деталей
При тестировании интерфейса сведений или любого API, требующего аутентификации пользователя, необходимо указать два запроса заголовка для получения информации о заголовке. Вы должны быть в Авторизации В заголовке запроса токен указан как Предъявитель Токен. В принципе, вам нужно написать по буквам токен, который вы получите после входа в систему и регистрации. Предъявитель Назад, освободите место посередине.
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '. $accessToken,
]Интерфейс списка продуктов
Интерфейс Добавления Продукта
Интерфейс Отображения Продукта
Интерфейс Обновления продукта
Интерфейс удаления Продукта
Полный код этого руководства можно получить на GitHub
От: https://learnku.com/laravel/t…
Дополнительные статьи: https://learnku.com/laravel/c…