用 Email 寄 6 或 8 碼驗證碼就好,整個系統沒有密碼欄位。
我的電商網站沒有密碼。
登入流程是:輸入 Email → 收信拿到 6 碼驗證碼 → 輸入 → 登入完成。
沒有註冊表單、沒有設定密碼、沒有忘記密碼、沒有重設密碼信、沒有密碼強度規則。
想一想,客戶忘記密碼的時候,你怎麼讓他回來?寄一封信到他的 Email。
也就是說,你的帳號安全性,本來就等於他的 Email 安全性。密碼只是中間多出來的一層,它沒有提高任何門檻,卻帶來一整套要維護的東西:
既然最後都要靠 Email 證明身分,那就直接用 Email 證明身分。
這是我很喜歡的副作用:不需要分「登入」跟「註冊」兩個按鈕。
輸入 Email,系統查一下有沒有這個人,沒有就建一個,然後一律寄驗證碼。對客戶來說,他只是「輸入 Email」,不用先想自己是不是會員。
電商最怕結帳前卡一道註冊牆。這個設計直接把那道牆拆了。
一、驗證前不要洩漏這個 Email 有沒有註冊過。
如果「已註冊」跟「未註冊」的畫面或訊息不一樣,別人就能拿一份名單來掃,知道誰是你的客戶。我的做法是不管有沒有註冊,UX 完全一樣,都是「驗證碼已寄出」。
二、Email 驗證過,不等於註冊完成。
OTP 通過只證明他擁有這個信箱。條款同意、基本資料這些還是要補。所以我的流程是:驗證成功 → 順手標記 email_verified_at → 檢查有沒有完成註冊 → 沒有就導去補。
你把身分驗證押在信件到達率上。 驗證碼進垃圾桶、信件延遲五分鐘,客戶就卡住了。所以寄送服務要用可靠的,寄件網域要設好 SPF/DKIM。
每次登入都要開信箱,比記得密碼的人麻煩一點。可以把 session 生命週期設長一點。
台灣的電商客戶,大部分本來就不記得自己的密碼。與其維護一套他們用不到的東西,不如拿掉它。