Làm cách nào để ánh xạ tên miền thành userid khi có yêu cầu?
Rõ ràng, bạn sẽ phải lưu trữ thông tin đó ở đâu đó, rất có thể trong cơ sở dữ liệu.
Thêm một bảng cơ sở dữ liệu domains
với các cột:
- ID khách hàng
- tên
- hoạt động (1 hoặc NULL)
- thách thức
Thêm chìa khóa duy nhất cho (tên, hoạt động) để đảm bảo tên miền được ánh xạ trên ly một lần.
Khi khách hàng cố gắng thêm tên miền, hãy thêm hàng có hoạt động = NULL và đặt thử thách thành chuỗi ngẫu nhiên.
Hiển thị chuỗi ngẫu nhiên cho khách hàng và yêu cầu họ đưa trang web lên trang web hoặc tạo bản ghi DNS giả để xác minh quyền sở hữu tên miền (đây là cách Google Apps thực hiện).
Bạn có thể xác minh quyền sở hữu bằng cách gửi email tới người liên hệ quản trị hoặc theo cách khác.
Khi khách hàng nói rằng anh ấy đã làm những gì bạn đã hướng dẫn họ thực hiện trong bướC# 2, hãy xác minh và đặt hoạt động = 1, challenge = NULL.
Nếu tên miền trước đó đã hoạt động cho một số khách hàng khác, hãy xóa các bản ghi đó hoặc đặt hoạt động = 0.
Yêu cầu khách hàng thêm bản ghi CNAME cho miền của họ và chuyển tiếp bản ghi đó tới miền của bạn, ví dụ: hosted.myservice.com
(Google sử dụng ghs.google.com
cho Google Apps).
Khi có một request đến, làm
SELECT customerId FROM domains WHERE name=:requestDomain AND active=1
Cách tốt hơn có thể để tự động cung cấp cho khách hàng của bạn một miền trong định dạng của <customername>.myservice.com
, ngoài miền tùy chỉnh. Điều này mang lại cho bạn hai lợi ích:
- Khách hàng không muốn sử dụng tên miền riêng của họ vẫn có thể tùy chỉnh trang đăng nhập của họ, ví dụ: với logo của công ty.
Đối với tên miền tùy chỉnh, bạn có thể yêu cầu khách hàng chuyển tiếp chúng đến <customername>.myservice.com
thay vì một số chung hosted.myservice.com
.
Điều này cho phép bạn phân vùng theo chiều ngang khách hàng giữa nhiều máy chủ mà không phải yêu cầu khách hàng thay đổi bất kỳ thứ gì về phía họ. Ví dụ: bạn có thể cung cấp cho khách hàng tùy chọn để chọn xem họ có muốn tài khoản của họ được lưu trữ ở EU hay Hoa Kỳ hay không. Khi họ thay đổi nó, chỉ cần chuyển dữ liệu của họ và cập nhật <customername>.myservice.com
. Miền tùy chỉnh của họ sẽ hoạt động tự động.
Để làm điều này, bạn phải thiết lập một bản ghi DNS wildcard cho *.myservice.com
(trừ khi bạn cũng cần tính năng thứ hai, trong trường hợp này bạn sẽ phải quản lý hồ sơ cá nhân).
Nguồn
2009-12-13 11:25:38
Tôi nghĩ đây là một câu trả lời hay. Tôi đã học được điều gì đó, cảm ơn, Jaka! – Upgradingdave
Tại sao bạn phải xác minh quyền sở hữu tên miền? Nếu họ có thể thêm CNAME, thì đó có phải là bằng chứng đủ không? –
@ ChristianDavén Bạn cần xác minh CNAME! Cho phép sử dụng tumblr như một ví dụ (mà tôi tin rằng có vấn đề này). Công ty ABC sắp ra mắt. Họ sẽ khởi chạy với blog.ABC.com. Công ty Evil XYZ đi trên tumblr và đăng ký blog CNAME.ABC.com để trỏ đến blog của họ trước khi ABC. Nếu không có xác minh mà blog nên nó trỏ đến? –