Tôi có một vài ứng dụng Rails tôi đang tìm cách tích hợp với OmniAuth, nhưng có một vấn đề khái niệm mà tôi đang gặp phải mà tôi muốn tìm ra trước tiên . Hãy xem xét trường hợp sau:OmniAuth: Bảo vệ chống lại nhiều tài khoản cho cùng một người dùng
- Ứng dụng của bạn, Foo, hỗ trợ đăng nhập OmniAuth qua Twitter và Facebook.
- Joe đến trang web của bạn và đăng nhập qua tài khoản Twitter của anh ấy. Điều này tạo ra một người dùng mới trên Foo và liên kết nó với ủy quyền Twitter mới này.
- Joe đăng xuất khỏi Foo và quên về trang web trong sáu tháng.
- Joe trở lại Foo, không nhớ rằng trước đây anh đã đăng nhập bằng Twitter.
- Joe đăng nhập bằng Facebook. Vì anh ta chưa đăng nhập thông qua ủy quyền Twitter ban đầu của mình, không có cách nào để phát hiện anh ta, trên thực tế, cùng một Joe, và một tài khoản mới được tạo ra.
- Joe phát hiện ra tài khoản cũ của mình và giờ đây đã thất vọng vì nội dung cũ của anh ấy bị ràng buộc với tài khoản cũ này và anh ấy không thể đăng nhập bằng Twitter và Facebook thay thế được.
Vì Twitter không cung cấp Foo bằng địa chỉ email, không có số nhận dạng phổ dụng để phát hiện hai tên Joes giống Joe. Bạn có thể quyết định chỉ hỗ trợ các nhà cung cấp cung cấp cho bạn địa chỉ email của người dùng, nhưng điều này không giúp ích nếu người dùng đã đăng ký với các địa chỉ email khác nhau trên các nhà cung cấp khác nhau.
Giải pháp duy nhất khác mà tôi có thể nghĩ là cung cấp cho người dùng một số cách để hợp nhất hai tài khoản hiện có. Đó là một nhức đầu lớn so với sự dễ dàng tương đối của mọi thứ khác khi sử dụng OmniAuth. Nếu đây là giải pháp duy nhất, có ai đi qua một hướng dẫn/hướng dẫn cho thấy một ví dụ về cách này có thể được thực hiện? Tôi ngạc nhiên về vấn đề này đã không nhận được nhiều sự chú ý hơn vì sự phổ biến của OmniAuth.
Cảm ơn!
Tôi không thấy giải pháp hoàn hảo cho vấn đề này. Vì vậy, tôi đã quyết định đi với nhà cung cấp duy nhất cho đến bây giờ cho đến khi tôi tìm ra một giải pháp vững chắc cho việc này. – hnprashanth
hi Jimmy Cuadra, bạn có thể xem try.discourse.org. Discourse đã triển khai nhiều tùy chọn đăng ký bằng omniauth. Mã nguồn của nó có sẵn tại GitHub. –