Đây là câu hỏi cơ sở dữ liệu. Tôi có một thư viện openid đã được cài đặt và làm việc.Lưu trữ thông tin OpenID trong cơ sở dữ liệu
Tôi muốn sử dụng OpenID trên trang web mà tôi đang làm việc. Có ba loại người dùng.
- tài khoản tên sử dụng email/mật khẩu để xác thực
- tài khoản tên sử dụng OpenID để xác thực
- tài khoản Anonymous sử dụng OpenID để xác thực
Tất cả những người dùng được lưu trữ trong cùng một bảng đơn giản bảng bình luận. Các tài khoản được đặt tên được liên kết với một blog mà tài khoản có thể quản lý. Người dùng ẩn danh có thể nhận xét về các bài viết trên blog nhưng họ không thể làm gì khác. Nếu người dùng ẩn danh đăng ký tài khoản, tôi muốn tự động chuyển các nhận xét cũ của người dùng đó sang tài khoản được đặt tên. Tôi hiện đang thực hiện việc này bằng cách yêu cầu người dùng điền vào biểu mẫu có tên duy nhất và email hợp lệ.
Hiện tại cả hai bộ tài khoản được lưu trữ trong cùng một bảng bằng lược đồ sau. (Có đó là một di cư đường ray)
create_table :users do |t|
t.string :name #unique because it maps to a subdomain
t.string :openid_url #unique
t.string :email #unique
t.string :password_hash
t.string :password_salt
t.boolean :guest #Anonymous user flag
t.timestamps
end
(openid_url
là duy nhất để ngăn chặn nhiều tài khoản không bị gắn vào openid cùng. email
là duy nhất bởi vì người dùng đăng nhập với email/mật khẩu)
Tôi đang sử dụng này Tôi đã gặp sự cố với việc triển khai OpenID của Google. Mỗi người dùng sử dụng Google cho OpenID có cùng url: https://www.google.com/accounts/o8/ud.
Làm cách nào để hỗ trợ sử dụng Google làm nhà cung cấp dịch vụ mở vì url của nó không phải là duy nhất cho mỗi người dùng? (Hãy nhớ ràng buộc tồn tại)
Lưu ý: Tài khoản Google có thể sử dụng bất kỳ địa chỉ email hợp lệ nào trên internet để tôi không thể lưu trữ [email protected] trong trường openid_url vì email có thể là person @ example. com hoặc tệ hơn [email protected]! Yahoo cũng sử dụng phương pháp url duy nhất này vì vậy tôi cũng phải hỗ trợ chúng.
Tại sao bạn cho rằng địa chỉ email là duy nhất? Họ có thể không. Điều gì sẽ xảy ra nếu bạn thấy một lần đăng nhập mở thứ hai và người dùng xác nhận địa chỉ email giống như địa chỉ email bạn đã có? –
Email dành cho các tài khoản được đặt tên không sử dụng openid. Kể từ đó tôi đã thay đổi ứng dụng của mình để sử dụng openid. (Tôi nghĩ rằng có đủ người có tài khoản google/yahoo mà tôi sẽ không gặp vấn đề gì với điều này.) – epochwolf