[英]Block the verify e-mail address e-mail from being sent in Laravel 5.8
我在用戶模型上使用了Laravel Notifiable特質,因此用戶必須先驗證其電子郵件地址才能登錄,這很好。
但是,我想將此電子郵件的發送延遲到應用程序中的以后(管理員手動確認每個用戶時)。
如何防止Laravel在創建帳戶時發送驗證電子郵件?
手動創建用戶時,可以隨時使用SendsPasswordResetEmails特性發送驗證電子郵件:
use SendsPasswordResetEmails;
$this->sendResetLinkEmail($request);
問題是我無法在標准Laravel身份驗證支架中找到此代碼以防止其發生。
Notifiable
特質不是向用戶發送電子郵件驗證的內容,而是User
模型實現的MustVerifyEmail
接口。
因此,要手動執行此操作,您需要從
EventServiceProvider
$listen
映射:
Registered::class => [
SendEmailVerificationNotification::class,
]
然后在以后找到要向其發送電子郵件驗證的User
並向其發送電子郵件,如下所示:
User::find($userId)->sendEmailVerificationNotification();
正如@nakov所提到的,Laravel用來執行它的魔術是MustVerifyEmail
接口。 Laravel檢查要通知的類(即User
)是否實現MustVerifyEmail
接口,如果是,則發送驗證通知。
盡管可以從EventServiceProvider
刪除Registered
事件偵聽器,但也可以從User
類中刪除implements MustVerifyEmail
。
通過保持事件偵聽器MustVerifyEmail
並只需從User
類中刪除MustVerifyEmail
接口,就可以使自動電子郵件驗證系統保持完整,以防萬一您要創建另一種User
類確實收到了自動電子郵件驗證通知。
因此,從您的User
類中刪除implements MustVerifyEmail
,然后在您要發送驗證電子郵件時在您的用戶上手動調用sendEmailVerificationNotification()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.