hỏi về token trong forgot password và verify email
Hiện tại e đang làm hệ thống cho phép quên mật khẩu và xác thực tài khoản qua email, hiện tại e đã làm thêm 1 trường token trong csdl bảng user để khi xác thực email nó sẽ gửi token đó, vậy với quên mật khẩu thì e lại phải thêm 1 trường token trong csdl riêng cho nó nữa hay xử lý như thế nào ạ
2 CÂU TRẢ LỜI
Bạn làm như trên cho chức năng verify email cũng được rồi nhé.
Với chức năng quên mật khẩu, bạn có thể tạo thêm một bảng password_resets, một email có thể có nhiều tokens để reset password. Mỗi lần có yêu cầu reset password, bạn sẽ tạo một row. Khi reset thành công thì xóa hết các token của email đó đi.
password_resets:
- email: string
- token: string
- created_at: datetimez
Bạn đánh index cho 2 cột email + token để truy vấn nó nhanh hơn nhé.
Nếu code Laravel thì bạn có hàng mì ăn liền từ framework luôn mà không phải code thêm nhiều:
Bonus: Chức năng verify email bạn có thể ký (sign) cái link. Khi người dùng truy cập link thì bạn chỉ cần check xem cái chữ ký (signature) có valid hay không là được. Làm như này sẽ không cần phải lưu lại token cho chức năng verify email.
Theo mình thì bạn làm tương tự là được. Vì cái token này cần invalid ngay sau khi người dùng truy cập link mà. Xác thực tài khoản xong thì cột token đó cũng chẳng để làm gì nữa rồi, tận dụng luôn.