Я использую Larvel 6
Я хочу добавить эту функцию в свое приложение:
Приложение получает номер мобильного телефона пользователя, затем генерирует mobile_number_verification_code
как 145787
и обновления таблица пользователя! тогда сгенерированный код будет отправлен в виде SMS для пользователя! и он / она вводит код для входа!
Примечание: код можно использовать всего через 2 минуты после времени генерации
это будет User
модель
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->string('username')->unique()->nullable();
$table->string('mobile_number')->unique()->nullable();
$table->string('mobile_number_verification_code')->nullable();
$table->string('mobile_number_verification_code_expires_at')->nullable();
$table->bigInteger('mobile_number_verified_at')->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
Я хочу использовать Laravel способ авторизации по умолчанию, поэтому я могу использовать этот код для попытки входа в систему:
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
return $this->guard('users')->attempt(
[
'mobile_number' => '9128889966', // the mobile number
'mobile_number_verification_code' => '145787' // the code which user has received
]
, $request->filled('remember')
);
}
все выглядит хорошо, но пропущен один важный момент: код можно использовать всего через 2 минуты после времени генерации
Как проверить, что код истек или нет? Я знаю, что могу проверить его после входа в систему, а затем, если срок действия кода истек, используйте Auth::logout();
, чтобы выйти из него! но так ли это лучше? Не лучше ли редактировать метод attempt()
?