На самом деле вариантов нет в Laravel, но поскольку laravel использует следующее:
В признаке MustVerifyEmail
есть метод, называемый sendEmailVerificationNotification
.Здесь используется класс Notification VerifyEmail
, на который ссылается @ nakov's answer и его функция verificationUrl
:
/**
* Send the email verification notification.
*
* @return void
*/
public function sendEmailVerificationNotification()
{
$this->notify(new Notifications\VerifyEmail);
}
Поскольку мы знаем это, мы можем сделать следующее:
- Расширение
Notifications\VerifyEmail
до нашего пользовательского VerifyEmail
класса - переопределение реализации
verificationUrl
- переопределение реализации метода
sendEmailVerificationNotification
вUser
модель для использования нашего нового VerifyEmail
класса.
Сделав вышеизложенное, наша User
модель будет иметь следующий метод:
/**
* Send the email verification notification.
*
* @return void
*/
public function sendEmailVerificationNotification()
{
$this->notify(new \App\Services\Verification\VerifyEmail);
}
Теперь мы делаемиспользование нашего класса VerifyEmail
.Тогда наш новый класс VerifyEmail
будет выглядеть так:
namespace App\Services\Verification;
use Illuminate\Support\Carbon;
use \Illuminate\Support\Facades\URL;
class VerifyEmail extends \Illuminate\Auth\Notifications\VerifyEmail
{
protected function verificationUrl($notifiable)
{
return URL::temporarySignedRoute(
'verification.verify', Carbon::now()->addMinute(3), ['id' => $notifiable->getKey()]
); //we use 3 minutes expiry
}
}
Ну, кроме объяснений, процесс довольно прост.Я надеюсь, что это легко понять.Ура!