Làm chức năng xác thực email khi đăng kí trong webservice

Chào ạ,
Câu hỏi 1 :
Lúc trước em học làm web MPA có sử dụng session để lưu mã OTP khi user đăng kí. Nhưng giờ em chuyển qua học làm web SPA, controller server thiết kế Restful chỉ trả về json thôi, em không sử dụng session, vậy thì em phải xác thực OTP như thế nào ?
Cụ thể là như này :
Khi user submit username and password thì server sẽ random ra OTP lưu vào session rồi gửi mail. Nhưng em thiết kế Restful API không dùng session thì OTP code em lưu ở đâu ? (Trường hợp server tự tạo OTP không dùng bên thứ 3)

Câu hỏi 2 :
Em định xác thực SDT bằng firebase SMS nếu em tích hợp vào web thì xử lý bằng JavaScript là đủ rồi đúng không ? Không liên quan đến server ? firebase trả về true thì chuyển trang “bạn đã đăng kí thành công” ?

em cảm ơn

câu hỏi hơi ngáo nhưng cũng hay, đáng hỏi :smiley:

  1. chưa bàn đến giải pháp, bài toán của bạn phát sinh vấn đề như sau
  • bạn sẽ dùng giải pháp gì cho việc ghi nhớ login? cứ coi như là jwt đi
  • khi client gọi api login, nếu check thông tin đăng nhập đúng, bạn sẽ trả về những gì? cứ coi như là thông điệp gì đó báo ok (thông tin đăng nhập hợp lệ).
    -> Vậy với lần gọi tiếp theo, tức là gọi api xác thực otp, phát sinh ra một vấn đề: làm sao biết được cái lần gọi này xuất phát từ cái thiết bị vừa gọi login?
    Chưa kể là có 2 client cùng đăng nhập 1 account, biết otp nào là của client nào.
    Như vậy ngoại việc gen ra otp, bạn còn cần phải định danh thiết bị (client), và pair otp bạn đã gen với device đó để tránh trường hợp thiết bị này gọi login mà thiết bị kia lại gọi xác thực otp
    Chưa kể là các trường hợp khác như là chỉ có 1 device login trong 1 thời điểm rồi đá client kìa ra bla bla, thì cũng phát sinh vấn đề là lưu 1 token cuối cùng…

=> cần định danh thiết bị, thiết bị gọi xác thực otp cần gửi otp kèm theo định danh của mình khi login
còn việc bạn lưu bộ thông tin device - otp (có thể là expire time) - account ở đâu thì tùy, database hay cache (ví dụ redis) đều được, miễn có thể lấy ra để check là được

  1. bạn có thể tham khảo ở đây. https://firebase.google.com/docs/auth/web/phone-auth

Chữ ngáo ở trên chỉ là nói theo cách đùa vui thôi, vì câu này tưởng dễ mà không dễ
Bạn tự học mà có thể đặt ra vấn đề login và otp thì cũng coi như có tinh thần tìm hiểu và nghiên cứu. Tuy nhiên cái bạn còn thiếu chính là tự chất vấn, bác bỏ design/solution của mình, để tập bảo vệ giải pháp của mình
Hoặc nếu trong quá trình bạn đặt ra vấn đề, mà bạn giải quyết được thì thêm tiến bộ, không giải quyết được thì cũng sẽ là những câu hỏi hay cho bản thân nâng cao kiến thức, mở rộng tư duy

12 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?