Tôi đang cố triển khai xác thực OpenID cho trang web của mình. Đây là kịch bản:
tôi muốn người dùng để có thểLưu trữ thông tin OpenID cần thiết
- đăng nhập chỉ sử dụng OpenID (. Người dùng có thể chỉ yêu cầu xác minh bằng cách truy cập cung cấp OpenID không cần phải tạo một tài khoản tùy chỉnh với email mật khẩu),
- Qua email/mật khẩu (người dùng đã đăng ký tại chỗ bằng cách điền vào biểu mẫu)
- Đính kèm (các) id mở vào tài khoản của mình (openids + email cho một tài khoản).
Bây giờ tôi không biết thông tin đăng nhập nào tôi nên lưu trữ cho id mở. và không chắc chắn về lược đồ DB. Dưới đây là giản đồ cơ sở dữ liệu:
Table: Users
UserId => PK
... => Custom info. Not related to authentication.
Table: Authentication
AuthenticationId => PK
LoginId => (when custom site membership => email address) (when openId => openid unique address)
UserId => FK to Users.
Provider =>(when custom site membership => "CUSTOM") (when openId => openid provider address)
Password => filled when using custom membership. empty when using open id.
Bây giờ khi người dùng đăng nhập vào, cho dù bằng cách sử dụng thành viên openid/tùy chỉnh, tôi chỉ cần nhìn vào bảng xác thực và tìm kiếm thông tin và có được người dùng thích hợp. Nếu không có người dùng nào tồn tại, tôi tạo người dùng mới và thêm mục nhập trong bảng xác thực.
Câu hỏi chính: Sản phẩm lưu trữ
Provider
vàLoginId
(xem các ý kiến ở trên để xem những gì đang được lưu trữ trong các lĩnh vực này) đủ để lưu trữ chứng thực openid? Tôi có nên lưu trữ bất kỳ dữ liệu bổ sung nào để khi người dùng trả lại, tôi có thể xác thực họ dựa trên dữ liệu đã lưu của tôi không?Bạn có đề xuất phương pháp nào khác (hiệu quả hơn) để thực hiện việc này không?
Cảm ơn bạn.
Tôi đã xóa cột 'Nhà cung cấp' và thêm 'IsOpenId' của loại' bit'. Ưu điểm của việc tách các bảng xác thực (cho openid và tùy chỉnh) [Thay vì loại bỏ cột 'Password' không cần thiết cho các xác thực openid] là gì? – Kamyar
Tôi đã tăng cường câu trả lời cho bạn. –
Hoàn hảo! Cảm ơn. – Kamyar