यह एक डेटाबेस प्रश्न है। मेरे पास पहले से स्थापित और काम कर रहे एक ओपनिड लाइब्रेरी है।डेटाबेस में ओपनआईडी जानकारी संग्रहीत
मैं ओपनआईडी का उपयोग उस वेबसाइट पर करना चाहता हूं जिस पर मैं काम कर रहा हूं। तीन प्रकार के उपयोगकर्ता हैं।
- नाम ईमेल/पासवर्ड का उपयोग कर OpenID का उपयोग करते
- बेनामी खाते को प्रमाणित करने के लिए OpenID का उपयोग करते
- नाम खातों का प्रमाणीकरण करने खातों का प्रमाणीकरण करने
इन उपयोगकर्ताओं के सभी के लिए एक ही तालिका में जमा हो जाती है बस टिप्पणी तालिका। नामित खाते एक ब्लॉग से जुड़े होते हैं जो खाता प्रबंधित कर सकता है। बेनामी उपयोगकर्ता ब्लॉग पर लेखों पर टिप्पणी कर सकते हैं लेकिन वे कुछ भी नहीं कर सकते हैं। यदि कोई अज्ञात उपयोगकर्ता किसी खाते के लिए साइन अप करता है तो मैं उस उपयोगकर्ता की पुरानी टिप्पणियों को स्वचालित रूप से नामित खाते में स्थानांतरित करना चाहता हूं। मैं वर्तमान में उपयोगकर्ताओं को एक अद्वितीय नाम और वैध ईमेल के साथ एक फॉर्म भरकर कर रहा हूं।
वर्तमान में दोनों स्कीमा का उपयोग करके एक ही तालिका में खातों के दोनों सेट संग्रहीत किए जाते हैं।
मैं इस का उपयोग कर रहा है (एक रेल प्रवास हाँ, यह है)
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
ही openid के साथ संलग्न कर से अनेक खातों को रोकने के लिए अद्वितीय है। email
अद्वितीय है) सेटअप मैंने Google के ओपनआईडी कार्यान्वयन के साथ एक समस्या में भाग लिया है। प्रत्येक उपयोगकर्ता जो ओपनआईडी के लिए Google का उपयोग करता है, वही यूआरएल है: https://www.google.com/accounts/o8/ud।
मैं Google को ओपनिड प्रदाता के रूप में उपयोग करने का समर्थन कैसे करूं क्योंकि यह यूआरएल प्रत्येक उपयोगकर्ता के लिए अद्वितीय नहीं है? (कृपया मौजूद बाधाओं को याद रखें)
नोट: Google खाते इंटरनेट पर किसी भी वैध ईमेल पते का उपयोग कर सकते हैं, इसलिए मैं openid_url फ़ील्ड में [email protected] को स्टोर नहीं कर सकता क्योंकि ईमेल व्यक्ति @ उदाहरण हो सकता है। कॉम या बदतर [email protected]! याहू भी इस एकल यूआरएल विधि का उपयोग करता है इसलिए मुझे भी उनका समर्थन करना होगा।
आप क्यों कहते हैं कि ईमेल पते अद्वितीय हैं? वे नहीं हो सकते हैं। क्या होगा यदि आप एक दूसरा ओपनिड लॉग देखते हैं और उपयोगकर्ता आपके पास पहले से ही एक ही ईमेल पते का दावा करता है? –
ईमेल नामित खातों के लिए ओपनिड का उपयोग नहीं कर रहा है। मैंने बाद में ओपनिड का उपयोग करने के लिए अपना आवेदन बदल दिया है। (मुझे लगता है कि पर्याप्त लोगों के पास google/yahoo खाते हैं जिनके साथ मुझे कोई समस्या नहीं होगी।) – epochwolf