簡體   English   中英

更新用戶電子郵件地址后從 Cognito 發送的雙重驗證電子郵件

[英]Double verification emails sent from Cognito upon updating user email address

我在我的應用程序中使用 AWS Cognito 進行用戶管理。 用戶池配置為用戶使用唯一的用戶名和密碼登錄,並且多個用戶可以具有相同的電子郵件地址。 我正在使用 Amplify 內置組件進行身份驗證。

我似乎無法解決的問題是更新用戶電子郵件時出現雙重驗證消息。 當電子郵件被更改時 CustomMessage_UpdateUserAttribute 被觸發,當用戶想要驗證更改的電子郵件時 CustomMessage_VerifyUserAttribute 被觸發。 我有一個自定義 lambda 函數,它偵聽這些觸發器,並根據用戶嘗試執行的操作發送相應的電子郵件:登錄、驗證電子郵件、重置密碼等。

因此,如果用戶修改了他的電子郵件地址,則會觸發 CustomMessage_UpdateUserAttribute 並且用戶會收到一封帶有以下(默認)消息的電子郵件“請驗證您的帳戶並輸入以下驗證碼以重置您的密碼:xxxxxx”。 但是,當該用戶登錄時,amplify 會識別出該用戶處於“verifyContact”狀態,並顯示您可以在下面看到的屏幕。

在此處輸入圖片說明

用戶有兩個選擇:

  1. 跳過驗證,或
  2. 選擇等待驗證的唯一屬性,然后單擊“驗證”按鈕。

單擊“驗證”按鈕會觸發 CustomMessage_VerifyUserAttribute 並向用戶發送另一封電子郵件。 用戶被重定向到以下屏幕。

在此處輸入圖片說明

第二個屏幕顯示用戶應該在哪里輸入新發送的代碼(來自第二封電子郵件)。 因此,用戶絕對不需要在電子郵件更新時自動發送的第一封電子郵件(和代碼)。 我試圖找到一種方法來避免發送電子郵件,但沒有找到好的解決方案。 Congito 不會讓您在不發送確認代碼的情況下覆蓋 lambda 中的消息,這是完全沒有必要的,因為沒有用戶可以輸入它的地方。 我不想禁用電子郵件驗證,或在更新時將 email_verified 設置為 true。

你有什么建議我可以做什么嗎?

如果有人面臨同樣的問題,解決方法是更新 email_verified 字段兩次。 更新電子郵件時,將 email_verified 設置為 true。 這將阻止 Cognito 在 CustomMessage_UpdateUserAttribute 上發送和發送電子郵件。 然后在單獨的用戶屬性更新請求中只將 email_verified 字段更新為 false。 這會將用戶設置為“verifyContact”狀態並在登錄時請求電子郵件驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM