Авторизация по номеру телефона в Laravel — это удобный и безопасный способ идентификации пользователей веб-приложения. Позволяет упростить процесс входа и повысить уровень безопасности, так как номер телефона обычно служит для большинства людей как уникальный идентификатор.
Для реализации авторизации по номеру телефона в Laravel можно использовать стандартный пакет Laravel Jetstream, который включает в себя готовую функциональность для аутентификации пользователей. Для начала необходимо установить Laravel Jetstream с помощью Composer:
«`bash
composer require laravel/jetstream
php artisan jetstream:install livewire
«`
Затем необходимо создать миграции для добавления столбца с номером телефона в таблицу пользователей:
«`bash
php artisan migrate
«`
Далее необходимо настроить маршруты для аутентификации по номеру телефона. Для этого можно использовать маршруты, предоставляемые Laravel Jetstream, или создать свои собственные маршруты. Например, можно создать маршрут для отправки SMS-кода для подтверждения номера телефона:
«`php
Route::post(‘/verify-phone’, [PhoneVerificationController::class, ‘sendVerificationCode’]);
«`
Для отправки SMS-кода можно использовать сторонние сервисы, такие как Twilio или Nexmo. Например, для отправки SMS-кода через Twilio можно использовать следующий код:
«`php
$twilio = new Client(env(‘TWILIO_SID’), env(‘TWILIO_TOKEN’));
$twilio->messages->create(
‘+15558675309’,
[
‘from’ => env(‘TWILIO_FROM’),
‘body’ => ‘Ваш код подтверждения: 123456’
]
);
«`
После отправки SMS-кода пользователю необходимо предоставить форму для ввода этого кода и подтверждения номера телефона. Для этого можно создать соответствующий контроллер и представление:
«`php
public function verifyPhone(Request $request)
{
$request->validate([
‘code’ => ‘required|numeric|digits:6’
]);
if ($request->code == $user->phone_verification_code) {
$user->phone_verified_at = now();
$user->save();
return redirect(‘/dashboard’);
}
return back()->withErrors([‘code’ => ‘Неверный код подтверждения’]);
}
«`
После успешного подтверждения номера телефона пользователь может авторизоваться веб-приложении с помощью своего номера телефона. Для этого необходимо настроить маршруты и контроллеры для аутентификации по номеру телефона. Например, можно создать маршрут для входа пользователя по номеру телефона:
«`php
Route::post(‘/login-phone’, [PhoneLoginController::class, ‘login’]);
«`
«`php
public function login(Request $request)
{
$request->validate([
‘phone’ => ‘required|numeric’,
]);
$user = User::where(‘phone’, $request->phone)->first();
if ($user && $user->phone_verified_at) {
Auth::login($user);
return redirect(‘/dashboard’);
}
return back()->withErrors([‘phone’ => ‘Пользователь с таким номером телефона не найден’]);
}
«`
Таким образом, реализация авторизации по номеру телефона в Laravel позволяет упростить процесс входа пользователей в веб-приложение и повысить уровень безопасности за счет уникальности номера телефона как идентификатора пользователя.
© KiberSec.ru – 06.04.2025, обновлено 06.04.2025
Перепечатка материалов сайта возможна только с разрешения администрации KiberSec.ru.