Avatar
1
Quốc Hưng Hoàng Beginner
Làm thế nào để unsubscribe email
Chào anh Dũng và mọi người,

Em đang nghiên cứu làm chức năng unsubscribe email

Sau khi xem qua tính năng này ở một số website thì unsubscribe url sẽ có path chứa 1 chuỗi các kí tự random.

Vì vậy, em dự định sẽ encode/decode user pk sang uid string để identify người dùng khi họ request to unsubscribe.

Em ko rõ liệu như vậy đã an toàn hay chưa (1) ?  vì em có liên hệ sang tính năng password reset thì 1 vài open-source project dùng kết hợp uid-token. Phần token ấy em chưa hiểu rõ mục đích của nó nên k có ý định sử dụng (2)

Rất mong anh Dũng và mọi người giải đáp giúp e 2 vấn đề trên ạ. Em cảm ơn

  • Answer
mail
Remain: 5
2 Answers
Avatar
tvd12 Beginner
tvd12 Beginner
anh chưa hiểu tính năng unsubscribe này là gì, em có thể mô tả kỹ hơn hoặc cho anh xem 1 website demo được không?
  • 0
  • Reply
Tức là hệ thống sẽ gửi email đến người dùng (dựa vào input nhất định). Ở cuối mỗi email sẽ có hyperlink để nguời dùng unsubscribe, tức người nhận cho rằng đây là email spam, họ ko muốn nhận email từ người gửi nữa.

Ví dụ như trang http://newsletter.grokking.org/ có mục subscribe để anh có thể nhận newsletter từ trang này. Đến 1 thời điểm, anh cho rằng các newsletter này là spam, anh k muốn nhận nữa. Thì cuối mỗi email sẽ có hyperlink Unsubscribe để anh unsubscribe.

Điểm khác của em là nguời dùng của hệ thống em có đăng kí tài khoản (ko giống grokking.org chỉ lưu thuần email address trong database)

 –  Quốc Hưng Hoàng 1661935724000
Avatar
tvd12 Beginner
tvd12 Beginner
Liệu em có đang suy nghĩ phức tạp quá không nhỉ? Về tính năng subscribe này trước đây anh làm thì chỉ đơn giản là tạo ra 1 bảng để lưu danh sách những thằng subscribe kiểu:

table subscriber {
  email varchar,
  unsubscribe_token varchar 
}

còn nếu của em là user có sẵn và chỉ phục vụ user có sẵn thì có thể thay email bằng user_id. unsubscribe_token thì là 1 chuỗi uuid random là được em ạ, hoặc em có thể sử dụng jwt token (với userId và thời gian hết hạn ở payload) cho cái token đó cũng ok. Cách này sẽ tách biệt với authenticated token của user, vì vậy ngay cả khi token này bị lộ thì cũng không có rủi ro bảo mật gì xảy ra cả.

Khi gửi mail thì kèm link kiểu: https://example.com/unsubscribe?token=xxxx. Hoặc là tạo html form cho nó submit dạng post lên server với cái token kia, nếu tìm thấy subscriber với token thì xoá đi bản ghi là xong em ạ.

Nếu chưa đúng ý mà em muốn hỏi, em có thể chỉ giúp anh xem anh trả lời chưa đúng ý nào em nhé.

  • 0
  • Reply
Cảm ơn anh đã giải đáp đúng ý em đang thắc mắc. Cảm ơn anh đã dành thời gian giải đáp ạ  –  Quốc Hưng Hoàng 1661938804000
Ok em  –  tvd12 1661938880000