Как добавить авторизацию в Laravel


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

В этой статье мы рассмотрим пошаговую инструкцию по добавлению авторизации в веб-приложение на Laravel. В процессе мы использовать инструменты и функциональности, предоставляемые самим фреймворком, что позволит нам реализовать авторизацию без необходимости писать большое количество кода.

Первым шагом будет установка Laravel. Если у вас уже установлен фреймворк, пропустите этот шаг. Для установки Laravel используйте Composer. Инструкции по установке Laravel можно найти на официальном сайте фреймворка.

После установки Laravel и настройки окружения мы можем приступить к добавлению авторизации в наше веб-приложение. Laravel предоставляет готовый механизм авторизации, который мы можем использовать. Первым шагом будет создание таблиц в базе данных для хранения информации о пользователях и их авторизации.

Установка Laravel

Для начала работы с Laravel необходимо установить его на свой компьютер. В этом разделе мы рассмотрим пошаговую инструкцию по установке Laravel.

1. Первым шагом необходимо установить Composer, инструмент управления зависимостями для PHP. Вы можете скачать Composer с официального сайта getcomposer.org и запустить установщик.

2. Затем откройте командную строку или терминал и перейдите в папку, где вы хотите установить Laravel.

3. Выполните команду composer global require laravel/installer для установки глобального Laravel Installer. Если у вас возникнут проблемы с командой composer, убедитесь, что у вас установлен PHP и путь к исполняемому файлу PHP прописан в переменной среды PATH.

4. После успешной установки Laravel Installer выполните команду laravel new project-name, где project-name — это название вашего проекта. Laravel Installer создаст новую папку с выбранным именем и установит в нее все необходимые файлы.

5. После завершения установки перейдите в новую папку вашего проекта с помощью команды cd project-name.

Поздравляю! Laravel успешно установлен на ваш компьютер и готов к работе.

Создание миграций и моделей

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

1. Для начала, откройте терминал и перейдите в корневую директорию вашего проекта Laravel.

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

КомандаОписание
php artisan make:migration create_users_table --create=usersСоздает миграцию для таблицы пользователей

3. Выполните команду php artisan migrate для применения миграции и создания таблицы пользователей в базе данных.

4. После этого можно создать модель User, которая будет представлять собой класс для работы с таблицей пользователей. Выполните следующую команду:

КомандаОписание
php artisan make:model UserСоздает модель User

5. Убедитесь, что файл User.php был создан в директории app/Models. Если нет, создайте его вручную и поместите следующий код внутрь файла:

<?phpnamespace App\Models;use Illuminate\Contracts\Auth\MustVerifyEmail;use Illuminate\Database\Eloquent\Factories\HasFactory;use Illuminate\Foundation\Auth\User as Authenticatable;use Illuminate\Notifications\Notifiable;class User extends Authenticatable{use HasFactory, Notifiable;/*** The attributes that are mass assignable.** @var array*/protected $fillable = ['name','email','password',];/*** The attributes that should be hidden for arrays.** @var array*/protected $hidden = ['password','remember_token',];/*** The attributes that should be cast to native types.** @var array*/protected $casts = ['email_verified_at' => 'datetime',];}

Теперь у вас есть миграция и модель для таблицы пользователей. Вы готовы продолжить добавление авторизации в Laravel.

Разработка маршрутов для авторизации

В Laravel уже предустановлены несколько маршрутов для авторизации, но вы также можете создать свои собственные, если это необходимо для вашего приложения.

Для создания маршрутов авторизации вам нужно отредактировать файл web.php, который находится в директории routes вашего проекта.

Первым шагом является добавление следующих маршрутов для авторизации:

use Illuminate\Support\Facades\Route;// Маршрут для отображения формы входа пользователяRoute::get('/login', 'Auth\LoginController@showLoginForm')->name('login');// Маршрут для выполнения входа пользователяRoute::post('/login', 'Auth\LoginController@login');// Маршрут для выполнения выхода пользователяRoute::post('/logout', 'Auth\LoginController@logout')->name('logout');// Маршрут для отображения формы регистрации пользователяRoute::get('/register', 'Auth\RegisterController@showRegistrationForm')->name('register');// Маршрут для выполнения регистрации пользователяRoute::post('/register', 'Auth\RegisterController@register');

В этих маршрутах используются контроллеры с методами, которые выполняют соответствующие действия при обращении к маршруту. Например, ‘Auth\LoginController@showLoginForm’ означает, что при обращении к маршруту /login будет вызван метод showLoginForm контроллера LoginController.

Помимо этих маршрутов, вы можете добавить свои собственные маршруты для других видов авторизации, таких как авторизация через социальные сети или использование токенов.

После добавления маршрутов в файл web.php, вы должны перейти к следующему шагу — созданию соответствующих методов в контроллерах.

Создание контроллеров для авторизации

Для реализации авторизации в Laravel необходимо создать контроллеры, которые будут обрабатывать запросы пользователей и выполнять логику авторизации. Для этого выполните следующие шаги:

  1. Создайте контроллер для регистрации пользователей, например, RegisterController;
  2. Добавьте методы для отображения формы регистрации (showRegistrationForm) и обработки отправленной формы (register);
  3. В методе register добавьте код для валидации данных, создания нового пользователя и его сохранения в базе данных;
  4. Создайте контроллер для аутентификации пользователей, например, LoginController;
  5. Добавьте методы для отображения формы аутентификации (showLoginForm) и обработки отправленной формы (login);
  6. В методе login добавьте код для проверки подлинности пользовательских данных, создания сессии авторизации и перенаправления пользователя;
  7. Создайте контроллер для выхода пользователя из системы, например, LogoutController;
  8. Добавьте метод logout, который будет обрабатывать запрос на выход пользователя и удаление сессии авторизации.

После создания контроллеров необходимо подключить их к маршрутам вашего приложения. Для этого отредактируйте файл routes/web.php и добавьте необходимые маршруты для работы с регистрацией, аутентификацией и выходом пользователя из системы.

Отображение форм авторизации и регистрации

Перед тем, как создать страницы для авторизации и регистрации в Laravel, вам потребуется настроить роуты и контроллеры для этих действий. В Laravel уже есть готовые классы и методы для этого, поэтому вам нужно будет только настроить их.

Сначала создайте маршруты для страницы авторизации и регистрации в файле routes/web.php:

<?php// Маршрут для отображения формы авторизацииRoute::get('/login', 'Auth\LoginController@showLoginForm')->name('login');// Маршрут для обработки отправки формы авторизацииRoute::post('/login', 'Auth\LoginController@login');// ...// Маршрут для отображения формы регистрацииRoute::get('/register', 'Auth\RegisterController@showRegistrationForm')->name('register');// Маршрут для обработки отправки формы регистрацииRoute::post('/register', 'Auth\RegisterController@register');// ...

После создания маршрутов, создайте соответствующие контроллеры в директории app/Http/Controllers/Auth. В контроллерах уже есть методы для отображения форм и обработки отправки данных.

<?phpnamespace App\Http\Controllers\Auth;use App\Http\Controllers\Controller;use Illuminate\Http\Request;class LoginController extends Controller{/*** Показать форму авторизации.** @return \Illuminate\View\View*/public function showLoginForm(){return view('auth.login');}/*** Обработать отправку формы авторизации.** @param  \Illuminate\Http\Request  $request* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Routing\Redirector*/public function login(Request $request){// Обработать отправку формы автоирации}}// ...class RegisterController extends Controller{/*** Показать форму регистрации.** @return \Illuminate\View\View*/public function showRegistrationForm(){return view('auth.register');}/*** Обработать отправку формы регистрации.** @param  \Illuminate\Http\Request  $request* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\Routing\Redirector*/public function register(Request $request){// Обработать отправку формы регистрации}}// ...

Заметьте, что в методах showLoginForm() и showRegistrationForm() возвращается соответствующий вид auth.login и auth.register.

Теперь создайте соответствующие файлы Blade для отображения форм авторизации и регистрации в директории resources/views/auth.

<!-- resources/views/auth/login.blade.php --><h3>Вход</h3><form method="POST" action="{{ route('login') }}">@csrf<div><label for="email">Email</label><input id="email" type="email" name="email" required autofocus></div><div><label for="password">Пароль</label><input id="password" type="password" name="password" required></div><div><input type="checkbox" name="remember" id="remember"><label for="remember">Запомнить меня</label></div><div><button type="submit">Войти</button><a href="{{ route('password.request') }}">Забыли пароль?</a></div></form><a href="{{ route('register') }}">Регистрация</a><!-- resources/views/auth/register.blade.php --><h3>Регистрация</h3><form method="POST" action="{{ route('register') }}">@csrf<div><label for="name">Имя</label><input id="name" type="text" name="name" value="{{ old('name') }}" required autofocus></div><div><label for="email">Email</label><input id="email" type="email" name="email" value="{{ old('email') }}" required></div><div><label for="password">Пароль</label><input id="password" type="password" name="password" required></div><div><label for="password-confirm">Подтверждение пароля</label><input id="password-confirm" type="password" name="password_confirmation" required></div><div><button type="submit">Зарегистрироваться</button></div></form><a href="{{ route('login') }}">Вход</a>

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

Валидация данных

Для обеспечения безопасности и целостности данных перед их сохранением в базу данных, Laravel предоставляет удобный механизм валидации данных.

Валидация осуществляется на стороне сервера и позволяет проверять различные правила для каждого поля формы.

Для добавления валидации в Laravel следует выполнить следующие шаги:

  1. Открыть контроллер, обрабатывающий форму авторизации.
  2. Импортировать класс Validator используя директиву use.
  3. Добавить метод validate в функцию, которая отвечает за обработку POST-запроса.
  4. Поместить правила валидации в массив $rules, в котором ключами являются названия полей формы, а значениями — правила валидации.
  5. Использовать метод Validator::make() для создания экземпляра валидатора на основе правил.
  6. Проверять результат валидации и, в случае ошибки, перенаправлять пользователя на страницу с формой авторизации и передавать ошибки на эту страницу.

После выполнения этих шагов, Laravel будет автоматически выполнять валидацию данных перед их сохранением в базу данных, а также передавать пользователю сообщения об ошибках, если они возникнут.

Работа с базой данных

Для работы с базой данных в Laravel используется встроенный ORM Eloquent, который позволяет удобно взаимодействовать с таблицами и данными.

Для начала необходимо создать миграцию, в которой описать структуру таблицы. После создания миграции можно запустить команду php artisan migrate, которая создаст таблицу в базе данных.

Чтобы взаимодействовать с данными в таблице, необходимо создать модель. Модель представляет отдельную таблицу в базе данных и содержит методы для работы с данными. Модель можно создать с помощью команды php artisan make:model НазваниеМодели.

После создания модели можно осуществлять основные операции с базой данных, такие как добавление, чтение, обновление и удаление данных. Примеры кода для выполнения этих операций:

  • Добавление данных:
  • $model = new Модель;$model->атрибут1 = 'значение1';$model->атрибут2 = 'значение2';...$model->save();
  • Чтение данных:
  • $model = Модель::find(id);
  • Обновление данных:
  • $model = Модель::find(id);$model->атрибут = 'новоеЗначение';$model->save();
  • Удаление данных:
  • $model = Модель::find(id);$model->delete();

Также можно использовать различные условия для выборки данных из базы данных:

  • Выбрать все записи:
  • $models = Модель::all();
  • Выбрать записи с условием:
  • $models = Модель::where('атрибут', 'значение')->get();
  • Выбрать первую запись:
  • $model = Модель::first();

Это лишь небольшая часть возможностей работы с базой данных в Laravel. При необходимости можно применять более сложные запросы или использовать другие методы Eloquent для работы с данными.

Реализация функционала входа и выхода

Для реализации функции входа необходимо создать форму, в которой пользователь будет вводить свои учетные данные — логин и пароль. В Laravel для создания формы можно использовать фасад Form. Например, следующий код создает форму входа:

{{ Form::open(['route' => 'login']) }}

{{ Form::label('email', 'E-Mail Address') }}

{{ Form::email('email', old('email'), ['required', 'autofocus']) }}

{{ Form::label('password', 'Password') }}

{{ Form::password('password', ['required']) }}

{{ Form::submit('Login') }}

{{ Form::close() }}

После отправки формы данные отправляются на маршрут ‘login’, где происходит проверка введенных учетных данных. В Laravel для этой проверки можно использовать метод Auth::attempt(). Например, следующий код проверяет введенные учетные данные:

public function login(Request $request)

{

$credentials = $request->only('email', 'password');

if (Auth::attempt($credentials)) {

// Аутентификация успешна

return redirect()->intended('dashboard');

}

// Аутентификация неуспешна

return back()->withErrors([

'email' => 'These credentials do not match our records.',

]);

}

Функцию выхода пользователя из системы можно реализовать с помощью метода Auth::logout(). Например, следующий код реализует функцию выхода:

public function logout(Request $request)

{

Auth::logout();

return redirect('/');

}

После выхода пользователя он перенаправляется на главную страницу сайта.

Создание ролей и разрешений

В Laravel можно легко создавать системы авторизации с помощью модуля laravel-permission. Этот модуль позволяет создавать роли пользователей, а также определять разрешения для каждой роли.

Для начала, установите пакет laravel-permission, выполнив команду:

composer require spatie/laravel-permission

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

php artisan migrate

Теперь вы можете создавать роли при помощи следующей команды:

php artisan permission:create-role роль

Например, для создания роли «администратор» выполните команду:

php artisan permission:create-role администратор

После создания ролей, вы можете определять разрешения для каждой роли. Для этого выполните команду:

php artisan permission:create-permission разрешение

Например, для создания разрешения «редактирование статей» выполните команду:

php artisan permission:create-permission редактирование статей

Теперь у вас есть роль «администратор» и разрешение «редактирование статей». Вы можете назначить это разрешение роли командой:

php artisan permission:assign-permission роль разрешение

Например, для назначения разрешения «редактирование статей» для роли «администратор» выполните команду:

php artisan permission:assign-permission администратор редактирование статей

Теперь, при авторизации пользователей, вы можете проверять разрешения для выполнения определенных действий. Например:

if ($user->hasPermissionTo('редактирование статей')) {// выполнить действие}

Вы также можете проверять разрешения в представлении:

@can('редактирование статей')@endcan

Таким образом, вы можете создавать роли и разрешения в Laravel для эффективной организации системы авторизации.

Добавить комментарий

Вам также может понравиться