2011-09-04 13 views
12

मैं उपयोगकर्ताओं को अपने फेसबुक, या ट्विटर खाते का उपयोग करके अपनी वेबसाइट पर लॉगिन करना चाहता हूं, लेकिन यदि उनके पास कोई नया खाता पंजीकृत करने के लिए कोई नहीं है, और इसका उपयोग करें मेरी साइट का मूल लॉगिन।ओएथ (फेसबुक, ट्विटर) और मूल लॉगिन - उपयोगकर्ता तालिका

लेकिन यह कैसे करना चाहिए मेरी उपयोगकर्ताओं तालिका लगता है:

मेरा विचार:

  • आईडी (प्राथमिक, ऑटो वेतन वृद्धि)
  • उपयोगकर्ता नाम (OAuth लॉगिन के मामले में => ouath_provider + oauth_id , पूर्व: fb_100001557958700)
  • पासवर्ड (उपयोगकर्ता द्वारा चुने गए पासवर्ड या ओथ के मामले में यादृच्छिक रूप से जेनरेट किया गया)
  • नाम (डिस्प्ले का नाम एई)

आपको क्या लगता है? या मेरे पास 2 टेबल, मूल लॉगिन के लिए 1 और ओथ लॉगिन के लिए 1 और होना चाहिए? लेकिन फिर उपयोगकर्ताओं के पास अद्वितीय आईडी कैसे होंगी?

टिप्पणियों के लिए अग्रिम धन्यवाद।

उत्तर

17

मेरे अनुभव में, आप एक ही टेबल में अपने प्राधिकरणों को संग्रहित कर रहे हैं, और दूसरे में आपका उपयोगकर्ता डेटा संग्रहीत कर रहे हैं।

प्राधिकरण:

network  - Varchar(255) #Twitter/Facebook/Openid/whatever 
network_id - varchar(255) #Users id for that social network. 
user_id  - int 

उपयोगकर्ताओं:

id (primary, auto increment) 
name 
password 
username 
इस संरचना के साथ

, यदि आप एक ही उपयोगकर्ता भविष्य में कुछ बिंदु पर दोनों ट्विटर और फेसबुक के साथ प्रवेश करने की अनुमति देना चाहते, वह यह है कि यह भी संभव है।

+1

उपयोगकर्ता का उपयोगकर्ता नाम और पासवर्ड क्या है? क्या यह शून्य है, या कुछ उत्पन्न हुआ है, या आपके उपयोगकर्ताओं को हर बार उपयोगकर्ता नाम और पासवर्ड का चयन करना होगा? –

+2

आदर्श रूप से आप उपयोगकर्ता को उपयोगकर्ता नाम पंजीकृत कर सकते हैं (जिसे ओथ प्रदाता से स्वतः बनाया जा सकता है) और एक पासवर्ड। यदि उपयोगकर्ता अपने ट्विटर या फेसबुक खाते से लॉक हो जाता है तो यह आपको फॉलबैक देता है। – Gazler

+0

मुझे क्षमा करें @ गैज़लर, लेकिन 'user_id' फ़ील्ड के बारे में क्या? इस संदर्भ में यह क्या दर्शाता है? मेरा मतलब है, क्या यह उपयोगकर्ताओं की मेज के लिए एक विदेशी कुंजी है? – Atieh

2

इस प्रकार मेरी उपयोगकर्ता तालिका दिखती है।

  • user_id (प्राथमिक, ऑटो वेतन वृद्धि)
  • oauth_provider (enum (कोई नहीं, ट्विटर, फेसबुक))
  • oauth_uid
  • उपयोगकर्ता नाम
  • पासवर्ड
  • आदि

हर जब कोई उपयोगकर्ता फेसबुक/ट्विटर के माध्यम से पंजीकरण कर रहा है, तो पासवर्ड रिकॉर्ड के साथ एक नई प्रविष्टि डाली जाती है नल के रूप में।

मुझे लगता है कि यह करने का यह एक अच्छा तरीका है, क्योंकि आपके पास 1 अद्वितीय उपयोगकर्ता_आईडी है जो आप अपने ऐप/डेटाबेस में उपयोग कर सकते हैं।

+0

धन्यवाद डंडेन। और फेसबुक/ट्विटर पंजीकरण के मामले में उपयोगकर्ता नाम क्या है? क्या यह शून्य है? –

+0

नहीं, जब उपयोगकर्ता फेसबुक/ट्विटर के साथ पंजीकरण करते हैं, तो उनके पास पहले से ही एक उपयोगकर्ता नाम हो सकता है। फेसबुक के लिए 'उपयोगकर्ता नाम' फ़ील्ड है और ट्विटर के लिए 'screen_name' फ़ील्ड है। – dandoen

+0

@ डंडेन लेकिन यहां समस्या यह है कि केवल "मूल" खातों में पासवर्ड होता है, ट्विटर के माध्यम से बनाए गए एसीसी आदि नहीं होते हैं। इससे डीबी में खाली पासवर्ड फ़ील्ड होते हैं, जो संभावित हैक्स की ओर जाता है क्योंकि उपयोगकर्ता नाम और पासवर्ड == "" (इसे एक बहुत ही मजबूत कोड आर्किटेक्चर की आवश्यकता होती है) – Sliq

संबंधित मुद्दे