একসাথে একাধিক ব্যবহারকারীর অ্যাকাউন্টগুলি মার্জ করার জন্য আর্কিটেকচার


176

ঠিক আছে, আমি একটি ওয়েবসাইট পেয়েছি যেখানে আপনি নিজেকে নিবন্ধন করতে এবং লগইন করতে পারেন। আপনি নিজের ফেসবুক, টুইটার বা লিংকডিন অ্যাকাউন্ট দিয়ে লগইন করতে পারেন।

এটি গুরুত্বপূর্ণ যে ব্যবহারকারীদের কেবল একটি অ্যাকাউন্ট নিবন্ধিত রয়েছে। সুতরাং কোনওভাবে, আমি লগইন করার জন্য ব্যবহারকারীরা যদি বিভিন্ন পদ্ধতি ব্যবহার করেন তবে আমি তাদের অ্যাকাউন্টগুলিকে একত্রীকরণ করতে চাই। এর সমাধানের সেরা সমাধান কী?

উদাহরণস্বরূপ, ব্যবহারকারী তার ফেসবুক অ্যাকাউন্ট দিয়ে লগ ইন করে। আমি স্বয়ংক্রিয়ভাবে তার জন্য একটি অ্যাকাউন্ট নিবন্ধিত করতে ডেটা ব্যবহার করি। আমাদের ওয়েবসাইটের একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ আমার কোনও ইমেল পাঠানো উচিত? (এটি যদি ফেসবুকের নীতিমালা দিয়ে ঠিক থাকে)। আমি কি তাদের দ্বিতীয় স্ক্রিনটি দেব যেখানে তারা একটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড পূরণ করতে পারে? তবে এটি আপনার ফেসবুক অ্যাকাউন্ট দিয়ে লগ ইন করার পিছনে ধারণা নয়। অংশ নিতে আপনার পদ্ধতিটি সহজসাধ্য করা উচিত।

এটি ব্যবহারকারীর নিজের ওয়েবসাইটে আমাদের নিবন্ধভুক্ত করা সম্ভব এবং পরের বার তার টুইটার অ্যাকাউন্টে লগ ইন করাও সম্ভব। আমি এই 2 টি অ্যাকাউন্টকে কীভাবে একীভূত করতে পারি? সবচেয়ে ভাল উপায় কি?

সুতরাং মূলত আমার প্রশ্নটি: আমি 4 টি বিভিন্ন উপায়ে পেয়েছি একজন ব্যবহারকারী আমাদের ওয়েবসাইটের সদস্য হন। যদি কোনও ব্যবহারকারী একাধিক উপায়ে ব্যবহার করার সিদ্ধান্ত নেন তবে এই 4 টি উপায়ই কেবলমাত্র একটি অ্যাকাউন্ট তৈরি করব তা আমি কীভাবে নিশ্চিত করতে পারি? এটি নিজের ব্যবহারকারীর জন্য কোনও ঝামেলা না হয়ে যায় তা নিশ্চিত করার জন্য সর্বোত্তম প্রবাহ কী?


সম্পাদনা:

আমি এই প্রশ্নটি জিজ্ঞাসা করার 3 বছর পরে, আমি নিজেই উত্তরটি ধারাবাহিক নিবন্ধগুলিতে দিচ্ছি: https://www.peternijssen.nl/social-network-authentication-setup/
https://www.peternijssen.nl/social- নেটওয়ার্ক-প্রমাণীকরণ-গুগল /
https://www.peternijssen.nl/social-network-authentication-merging-accounts/
https://www.peternijssen.nl/social-network-authentication-twitter-facebook/


7
অবশ্যই স্ট্যাক ওভারফ্লো এর মতো একাধিক লগইন পদ্ধতিগুলি ব্যবহার করে প্রথমে একাধিক অ্যাকাউন্ট থাকা থেকে একজন ব্যবহারকারীকে আটকাতে চেষ্টা করা ভাল, তবে এমনকি মডারেটরদের অ্যাকাউন্টগুলিকে মার্জ করার ক্ষমতাও এসও-র রয়েছে। আমি যাকে অনুমতি দেওয়ার জন্য কোনও আর্কিটেকচারের বর্ণনা দিতে পারি তার জন্য অনুদান দিচ্ছি। "আপডেট পোস্ট সেট ইউজারআইডি = 2 যেখানে ইউজারআইডি = 1" এর চেয়ে আরও ভাল সমাধান থাকতে হবে
ডেভিড বোইক

ইমেল এবং ফোনটি মার্জিং কী হিসাবে ব্যবহার করা যেতে পারে, অন্য কেউ?
ওয়ানার

হ্যালো, আপনি যে লিঙ্কটি সরবরাহ করেছেন তা কাজ করে বলে মনে হচ্ছে না। এটি কেবল সাইটের হোমপৃষ্ঠায় যায়
উইগামেজ

লিঙ্কগুলি আপডেট। নিবন্ধগুলি যদিও 6 বছরের পুরানো।
পিটি

উত্তর:


120

এই মুহূর্তে আমি ঠিক একই কাজটির মুখোমুখি হয়েছি। আমি যে নকশাটি নিয়ে কাজ করেছি তা বরং সহজ, তবে এটি ভালভাবে কাজ করে।

মূল ধারণাটি হ'ল স্থানীয় সাইট পরিচয় এবং তৃতীয় পক্ষের সাইটের পরিচয়ের জন্য মডেলগুলি পৃথক পৃথক রাখা হয়, তবে পরে সংযুক্ত করা হয়। সুতরাং সাইটে প্রবেশকারী প্রত্যেক ব্যবহারকারীর একটি স্থানীয় পরিচয় রয়েছে যা তৃতীয় পক্ষের সাইটের কোনও সংখ্যার মানচিত্রের মানচিত্র।

স্থানীয় পরিচয় রেকর্ডে ন্যূনতম তথ্য থাকে - এটি এমনকি একটি একক ক্ষেত্র হতে পারে - কেবল একটি প্রাথমিক কী। (আমার অ্যাপ্লিকেশনটির জন্য, আমি ব্যবহারকারীর ইমেল, নাম বা জন্মের তারিখের বিষয়ে চিন্তা করি না - আমি কেবল জানতে চাই যে তারা সেই ব্যক্তি যিনি এই অ্যাকাউন্টে লগইন করে চলেছেন all

তৃতীয় পক্ষের পরিচয়গুলি কেবলমাত্র তৃতীয় পক্ষের সাথে প্রমাণীকরণের জন্য প্রাসঙ্গিক তথ্য ধারণ করে। ওআউথের জন্য, এর অর্থ সাধারণত একটি ব্যবহারকারী শনাক্তকারী (যেমন একটি আইডি, ইমেল, বা ব্যবহারকারীর নাম) এবং একটি পরিষেবা শনাক্তকারী (কোন সাইট বা পরিষেবাটি প্রমাণিত হয়েছিল তা নির্দেশ করে)। অ্যাপ্লিকেশনটির অন্যান্য অংশে, ডাটাবেসের বাইরে, সেই পরিষেবা শনাক্তকারীকে সেই পরিষেবা থেকে প্রাসঙ্গিক ব্যবহারকারী শনাক্তকারীকে পুনরুদ্ধারের জন্য একটি পদ্ধতির সাথে যুক্ত করা হয়, এবং এটিই প্রমাণীকরণ কার্যকর হয়। ওপেনআইডি-র জন্য আমরা একই পদ্ধতি ব্যবহার করি, প্রমাণীকরণের পদ্ধতিটি আরও সাধারণীকরণ ব্যতীত (কারণ আমরা প্রায় সর্বদা সঠিক একই প্রোটোকলটি সম্পাদন করতে পারি - আমরা ভিন্ন পরিচয়ের URL ব্যবহার না করি এবং এটি আমাদের পরিষেবা শনাক্তকারী)।

অবশেষে, কোন তৃতীয় পক্ষের পরিচয় কোন স্থানীয় পরিচয়ের সাথে যুক্ত তা রেকর্ড রেখেছি। এই রেকর্ডগুলি তৈরি করতে, প্রবাহটি দেখতে এইরকম দেখাচ্ছে:

  • কোনও ব্যবহারকারী তৃতীয় পক্ষের পরিচয় ব্যবহার করে প্রথমবারের জন্য লগ ইন করে। একটি স্থানীয় পরিচয় রেকর্ড তৈরি করা হয়, তারপরে তৃতীয় পক্ষের পরিচয় রেকর্ড তৈরি করা হয় এবং তারপরে তারা যুক্ত হয়।
  • একটি নিয়ন্ত্রণ প্যানেলে, ব্যবহারকারীকে তৃতীয় পক্ষের পরিষেবাদিতে লগ ইন করে কোনও অ্যাকাউন্ট লিঙ্ক করার সুযোগ দেওয়া হয়। (কীভাবে এটি কার্যকর হয় খুব সোজা))
  • যে পরিস্থিতিতে ব্যবহারকারী অনিচ্ছাকৃতভাবে একাধিক অ্যাকাউন্ট তৈরি করে, সমাধানটি বেশ সহজ। ব্যবহারকারীর একটি অ্যাকাউন্টে লগ ইন করার সময়, সে অন্যটিতে লগ ইন করে যা আগে সে সাইটে লগইন করত (উপরের কন্ট্রোল প্যানেলের বৈশিষ্ট্যের মাধ্যমে)। ওয়েব পরিষেবাদি এই সংঘর্ষটি সনাক্ত করে (লগ-ইন করা ব্যবহারকারীর স্থানীয় পরিচয় সুনির্দিষ্টভাবে লগ ইন করা তৃতীয় পক্ষের পরিচয়ের সাথে সংযুক্ত স্থানীয় পরিচয় থেকে আলাদা) এবং ব্যবহারকারীকে অ্যাকাউন্ট একীভূত করার অনুরোধ জানানো হয়।

অ্যাকাউন্টগুলি মার্জ করা স্থানীয় পরিচয়ের প্রতিটি পৃথক ক্ষেত্রকে মার্জ করার বিষয় (যা প্রয়োগের পরিবর্তে প্রয়োগের ক্ষেত্রে পরিবর্তিত হয় এবং আপনার স্থানীয় পরিচয় রেকর্ডে যদি কেবল কয়েকটি ক্ষেত্র থাকে তবে সহজ হওয়া উচিত), এবং তারপরে লিঙ্কযুক্ত তৃতীয় পক্ষের পরিচয় নিশ্চিত করা ফলাফল স্থানীয় পরিচয়ের সাথে যুক্ত হয়।


1
এটি একটি খুব ভাল সমাধান (আমি স্থানীয় পরিচয়ের সংঘর্ষের স্বয়ংক্রিয় সনাক্তকরণের ধারণাটি পছন্দ করি)! আমি ভাবছি যে আপনি অ্যাপ্লিকেশনটিতে প্রথম লগইন করার পরে যুক্ত হওয়া "অতিরিক্ত" অ্যাকাউন্টগুলিতে ব্যবহারকারীকে স্বতঃ-লগইনের কোনও উপায় খুঁজে পেয়েছেন কিনা? ব্যবহারকারীর প্রত্যেকবার দেখার জন্য প্রতিটি অ্যাকাউন্টে আলাদাভাবে লগইন করতে হবে (যদি ইতিমধ্যে এই সরবরাহকারীদের সাথে কোনও সক্রিয় সেশন না থাকে)?
আলেকজান্দ্রা

@ আলেকজান্দ্রা "অতিরিক্ত অ্যাকাউন্ট" বলতে কী বোঝ? আপনি কি জিজ্ঞাসা করছেন যখন ব্যবহারকারীর বেশ কয়েকটি বিভিন্ন প্রমাণীকরণকারীর মাধ্যমে অ্যাপ্লিকেশনটিতে লগ ইন করে, প্রত্যেকটির সাথে একটি নতুন স্থানীয় পরিচয় তৈরি করে?
cheeken

আমি অনুমান করি যে এটি একটি যথাযথ স্পষ্টতা এবং তার নিজের প্রশ্নের উত্তর দেয়: স্ট্যাকওভারফ্লো.com
আলেকজান্দ্রা

3
যদিও প্রশ্ন, কিন্তু যদি ব্যবহারকারী একই ইমেল ঠিকানা ব্যবহার করে সাইটে নিবন্ধন করে? আমরা কি তাদেরকে অনুরোধ করব যে ইমেলটি ইতিমধ্যে বিদ্যমান (তৃতীয় পক্ষের মডেল থেকে আসা ইমেলটি) বা আমরা এখনও তাদের সাইটে নিবন্ধভুক্ত করি এবং তারপরে আমরা সেই অ্যাকাউন্টগুলিকে একীভূত করেছি?
ব্যবহারকারী 962206

@ user962206 অনেক পরিষেবা গোপনীয়তার কারণে আপনাকে 'রিয়েল' ইমেল ঠিকানাটি সরবরাহ করবে না। উদাহরণস্বরূপ, টুইটার আপনাকে কোনও ইমেল ঠিকানা দেবে না, যতদূর আমি জানি ফেসবুক "User.name@facebook.com" দেবে যা আমি সন্দেহ করি যে কেউ রেজিস্ট্রেশনের জন্য ব্যবহার করবে।
কেপেক্স

44

আমি ওভারল্যাপিং জয়েনিং ফ্যাক্টর হিসাবে ইমেলের উপর ভিত্তি করে প্রচুর সাইট মার্জ করার সন্ধান করি ।

আমি এটি একটি কার্যকর বিকল্প হিসাবে দেখতে পাচ্ছি, তবে আবার এটি কীভাবে মার্জ করা যায় তা আপনার পছন্দের উপর নির্ভর করে। ইমেল ঠিকানা হ'ল প্রাথমিকভাবে লোকেরা আপনার সাইটের গুরুত্বপূর্ণ তথ্য পরিবর্তনের যাচাই করতে ব্যবহার করে যেমন আপনার পাসওয়ার্ড পরিবর্তন করা, পরিষেবা শেষ করা, অ্যাকাউন্টের ভারসাম্য কম ইত্যাদি It's এটি প্রায় ওয়েবের সামাজিক সুরক্ষা নম্বর সিস্টেমের মতো তবে যোগাযোগের দক্ষতার সাথে । সাংস্কৃতিকভাবে: আমার ধারণা এটি যুক্তিসঙ্গত বলে মনে হয় যে OAuth প্রমাণীকরণ পরিষেবাদিগুলিতে ইমেল একটি দুর্দান্ত অনন্য পরিচয়। মঞ্জুর, ফেসবুক এবং গুগলের জন্য লগইন ফর্মগুলির জন্য এটি চাওয়া।

আমার বর্তমান চিন্তা প্রক্রিয়া

লগইন পৃষ্ঠায় 3 টি বিকল্প রয়েছে

  • আপনার নিজের সাইটের সদস্যতা
  • ফেসবুক দিয়ে লগইন করুন
  • গুগল দিয়ে লগইন করুন

1) প্রথমবারের জন্য ব্যবহারকারীর লগইন: একটি অ্যাকাউন্ট তৈরি এবং প্রথমবারের জন্য জনবহুল যেখানে একটি নিবন্ধন প্রবাহ ট্রিগার করুন।

 if the user logins using Facebook (or whatever 3rd party login)
      1) call the Facebook api asking for their information (email, name, etc...) 
      2) create an account membership entry in your database somewhat like this 

         Table = Users
         [ UserId   |       Email             | Password ]
         [    23     | "newuser@coolmail.com" |  *null*  ]

      3) create an external auths entry like so
         *ProviderUserId is the unique id of that user on the provider's site

         Table = ExternalAuths
         [ ExternalAuthId  |  User_UserId   | ProviderName |   ProviderUserId  ]
         [    56           |      23        |   Facebook   |  "max.alexander.9"]

 if the user wants to create an account with your own registration it would just be this           

         Table = Users
         [ UserId   |       Email           |   Password  ]
         [    23     | newuser@coolmail.com |  myCoolPwd  ]

2) অন্য কোনও সময়ে, ব্যবহারকারী ফিরে আসবে তবে গুগল লগইনে ক্লিক করার সিদ্ধান্ত নিয়েছে

      1) call the Google api asking for their information (email, name, etc...) 

      2) once you get the email, match it up to the userId entry with the existing email 

      3) create an additional External auth entry as such

         Table = ExternalAuths
         [ ExternalAuthId  |  User_UserId   | ProviderName |   ProviderUserId  ]
         [    56           |      23        |   Facebook   |  "max.alexander.9"]
         [    57           |      23        |    Google    |  "1234854368"     ]

3) এখন আপনি যে অ্যাকাউন্টে মার্জ হয়ে গেছেন যে আপনি আপনার ডাটাবেস এন্ট্রিগুলিতে ইমেলকে বিশ্বাস করেন তা বাহ্যিক লগইন থেকে আপনি যেমন বিশ্বাস করেন তেমনই হয়।

সুতরাং পরবর্তী লগইন জন্য

তাহলে যদি আপনার প্রথমে বাহ্যিক লগইন থাকে এবং আপনি যদি চান যে কোনও ব্যবহারকারী পরে পাসওয়ার্ড দিয়ে লগইন করতে সক্ষম হন?

আমি এটি করার দুটি সহজ উপায় দেখছি

  • যে কোনও প্রথম লগইনে যখন কোনও বাহ্যিক লেখক থেকে কোনও অ্যাকাউন্ট তৈরি করা হয়, আপনার অ্যাপ্লিকেশনটিতে তাদের প্রথম প্রবেশ সম্পূর্ণ করার জন্য তাদের একটি পাসওয়ার্ড জিজ্ঞাসা করুন

  • যদি তারা ইতিমধ্যে ফেসবুক বা গুগল ব্যবহার করে প্রথমে নিবন্ধভুক্ত থাকে তবে কোনওভাবে আপনার নিজের সাইটের নিবন্ধীকরণ ফর্মটি ব্যবহার করে নিবন্ধন করতে চেয়েছিল। তারা প্রবেশ করানো ইমেল ঠিকানা ইতিমধ্যে বিদ্যমান কিনা তা সনাক্ত করুন, তাদের একটি পাসওয়ার্ড জিজ্ঞাসা করুন এবং নিবন্ধকরণ সম্পূর্ণ হওয়ার পরে তাদের একটি ইমেল নিশ্চিতকরণ প্রেরণ করুন।


1
আপনি যখন কোনও বাহ্যিক প্রমাণীকরণ স্কিম ব্যবহার করেন (ফেসবুক, গুগল, টুইটার ইত্যাদি ...) আপনি কখনই বাহ্যিক সরবরাহকারীর পাসওয়ার্ড অ্যাক্সেস পাবেন না। উপরের উদাহরণে থাকা পাসওয়ার্ডটি আপনার ওডব্লিউএন অ্যাপ্লিকেশনটির পাসওয়ার্ড।
সর্বাধিক আলেকজান্ডার

6
টুইটার ব্যবহারকারীদের ইমেল সরবরাহ করে না। সুতরাং তাদের প্রথম প্রমাণীকরণের পরে যদি টুইটার ইউজারআইডি উপস্থিত না থাকে, তাকে ইমেল এবং পাসওয়ার্ডের জন্য অনুরোধ করুন। ইমেল এবং পাসওয়ার্ড উপস্থিত থাকলে, অ্যাকাউন্টগুলিতে লিঙ্ক করুন। যদি এটি না হয় তবে বিজোড় পরবর্তী প্রামাণিকতার জন্য ইমেল এবং পাসওয়ার্ড সংরক্ষণ করুন। এটি কি আদৌ সহায়ক ছিল?
সর্বোচ্চ আলেকজান্ডার

1
পার্শ্ব নোট হিসাবে, এখন আপনার টুইটার অ্যাপ্লিকেশনটির ব্যবহারকারীর ইমেল ঠিকানা পাওয়ার জন্য অনুমতিগুলির জন্য অনুরোধ করা সম্ভব ।
সুনীল ডি

2
ফেসবুক কি লোকেরা তাদের ইমেল যাচাই করে? আমি জানি যে উদাহরণস্বরূপ, গিথুব তা করে না। কোনও দূষিত ব্যবহারকারী গিথুবের জন্য অন্য কারও ইমেলের নামের সাথে সাইন আপ করতে পারে এবং তারপরে এই কৌশলটি দিয়ে আপনার সাইটে তাদের অ্যাকাউন্টে অ্যাক্সেস পেতে পারে। (গিথুবের এপিআই আপনাকে তাদের ইমেল যাচাই করা হয়েছে কিনা তা আপনাকে জানায় - আপনি যাচাইকৃত ইমেল ঠিকানায়
গিথুবের সাথে অনুমোদনপ্রাপ্ত

6
এটি সুরক্ষা লঙ্ঘন যদি কোনও ব্যবহারকারী সামাজিক যোগাযোগের মাধ্যমে সাইন আপ করে, সামাজিক যোগাযোগমাধ্যমে তাদের ইমেল ঠিকানাটি সম্পাদনা করে, অন্য কেউ একই ইমেল ঠিকানা নেয়, সামাজিক মিডিয়াতে নিবন্ধিত এবং লগ ইন করে, তারা অন্য কারও অ্যাকাউন্টে একীভূত হবে। এটি খুব সম্ভাবনাযুক্ত তবে লঙ্ঘন কম নয়। বা আমি কিছু মিস করছি
শেন

35

স্লেড.কম এর মাধ্যমে আমি এটি পেরিয়েছি। অ্যাকাউন্ট তৈরি এবং লগইনের জন্য একাধিক তৃতীয় পক্ষের অ্যাকাউন্টগুলিকে সমর্থন করার ক্ষেত্রে এখানে একাধিক সমস্যা রয়েছে। এর মধ্যে কয়েকটি হ'ল:

  • আপনার কি স্থানীয় পাসওয়ার্ড এবং তৃতীয় পক্ষের লগইন উভয়কে সমর্থন করতে হবে?

স্লেড.কমের জন্য, আমি এতে যুক্ত হওয়া স্বল্প মূল্য এবং একটি পাসওয়ার্ড এন্ট্রি ফর্ম সুরক্ষার অতিরিক্ত ব্যয়ের কারণে স্থানীয় পাসওয়ার্ড ফেলে দেওয়ার সিদ্ধান্ত নিয়েছি। পাসওয়ার্ড ভাঙ্গার জন্য অনেকগুলি পরিচিত আক্রমণ রয়েছে এবং আপনি যদি পাসওয়ার্ডগুলি চালু করতে চলেছেন তবে অবশ্যই তা নিশ্চিত হওয়া উচিত যে সেগুলি ভাঙ্গা সহজ নয়। এগুলি ফাঁস হওয়া থেকে রোধ করতে আপনার এগুলি একমুখী হ্যাশ বা অনুরূপ কিছুতে সঞ্চয় করতে হবে।

  • একাধিক তৃতীয় পক্ষের অ্যাকাউন্টগুলিকে সমর্থন করার ক্ষেত্রে আপনি কতটা নমনীয়তার অনুমতি দিতে চান?

মনে হচ্ছে আপনি ইতিমধ্যে তিনটি লগইন সরবরাহকারী: ফেসবুক, টুইটার এবং লিংকডইন বেছে নিয়েছেন। এটি দুর্দান্ত কারণ এটির অর্থ হল আপনি OAuth ব্যবহার করছেন এবং বিশ্বস্ত সরবরাহকারীদের একটি সু-সংজ্ঞায়িত সেট নিয়ে কাজ করছেন। আমি ওপেনআইডি-র কোনও অনুরাগী নই। বাকি প্রশ্নটি যদি আপনাকে একই সরবরাহকারীর একাধিক তৃতীয় পক্ষের অ্যাকাউন্টগুলি সমর্থন করার দরকার হয় (যেমন দুটি স্থানীয় অ্যাকাউন্টের সাথে সংযুক্ত একটি স্থানীয় অ্যাকাউন্ট)। আমি না ধরে নিচ্ছি, তবে আপনি যদি তা করেন তবে আপনার এটি আপনার ডেটা মডেলটিতে সামঞ্জস্য করতে হবে।

স্লেডের জন্য, আমরা ফেসবুক, টুইটার এবং ইয়াহুতে লগইন সমর্থন করি! এবং প্রতিটি ব্যবহারকারীর অ্যাকাউন্টের মধ্যে প্রত্যেকটির জন্য একটি কী সঞ্চয় করে: {"_id": "djdjd99dj", "yahoo": "dj39djdj", টুইটার: "3723828732", "ফেসবুক": "12837287"}} প্রতিটি তৃতীয় পক্ষের অ্যাকাউন্টটি কেবলমাত্র একটি স্থানীয় অ্যাকাউন্টের সাথে লিঙ্ক করা যায় তা নিশ্চিত করতে আমরা একগুচ্ছ বাধা সেটআপ করি।

আপনি যদি একই তৃতীয় পক্ষের সরবরাহকারীর একাধিক অ্যাকাউন্টকে মঞ্জুরি দিতে যাচ্ছেন তবে আপনাকে সমর্থন করতে তালিকাগুলি বা অন্যান্য কাঠামো ব্যবহার করতে হবে এবং তার সাথে স্বতন্ত্রতা নিশ্চিত করার জন্য অন্যান্য সমস্ত বিধিনিষেধ ব্যবহার করতে হবে।

  • একাধিক অ্যাকাউন্ট লিঙ্ক কিভাবে?

ব্যবহারকারী যখন প্রথমবার আপনার পরিষেবার জন্য সাইন-আপ করেন, তারা প্রথমে তৃতীয় পক্ষের সরবরাহকারীর কাছে যান এবং যাচাই করা তৃতীয় পক্ষের আইডি দিয়ে ফিরে আসেন। তারপরে আপনি তাদের জন্য একটি স্থানীয় অ্যাকাউন্ট তৈরি করুন এবং আপনি যা চান অন্যান্য তথ্য সংগ্রহ করুন। আমরা তাদের ইমেল ঠিকানা সংগ্রহ করি এবং তাদের স্থানীয় ব্যবহারকারীর নাম বাছাই করতে বলি (আমরা অন্য সরবরাহকারীর কাছ থেকে তাদের বিদ্যমান ব্যবহারকারীর নামটি দিয়ে ফর্মটি প্রাক-জনপ্রিয় করার চেষ্টা করি)। স্থানীয় শনাক্তকারীর কিছু ফর্ম (ইমেল, ব্যবহারকারীর নাম) পরে অ্যাকাউন্ট পুনরুদ্ধারের জন্য খুব গুরুত্বপূর্ণ।

সার্ভারটি জানে যে ব্রাউজারের কোনও বিদ্যমান অ্যাকাউন্টের জন্য সেশন কুকি (বৈধ বা মেয়াদোত্তীর্ণ) না থাকলে এবং ব্যবহৃত তৃতীয় পক্ষের অ্যাকাউন্টটি খুঁজে পাওয়া যায় নি this আমরা ব্যবহারকারীকে অবহিত করার চেষ্টা করি যে তারা কেবল লগ-ইন করছে না, তবে একটি নতুন অ্যাকাউন্ট তৈরি করছে যাতে তাদের যদি ইতিমধ্যে একটি অ্যাকাউন্ট থাকে তবে তারা আশা করি পরিবর্তে তাদের বর্তমান অ্যাকাউন্টটি থামিয়ে লগইন করতে পারে।

আমরা অতিরিক্ত অ্যাকাউন্টগুলিতে লিঙ্ক করতে একই একই প্রবাহটি ব্যবহার করি তবে ব্যবহারকারী যখন তৃতীয় পক্ষ থেকে ফিরে আসে তখন কোনও লগইন ক্রিয়ায় কোনও নতুন অ্যাকাউন্ট লিঙ্ক করার প্রয়াসের মধ্যে পার্থক্য করার জন্য একটি বৈধ সেশন কুকির উপস্থিতি ব্যবহৃত হয়। আমরা কেবলমাত্র প্রতিটি ধরণের একটি তৃতীয় পক্ষের অ্যাকাউন্টের অনুমতি দিই এবং যদি ইতিমধ্যে একটি লিঙ্কযুক্ত থাকে তবে ক্রিয়াটি অবরোধ করুন। এটি কোনও সমস্যা হবেনা কারণ একটি নতুন অ্যাকাউন্টের সাথে লিঙ্ক করার ইন্টারফেসটি যদি আপনার কাছে ইতিমধ্যে (প্রতি সরবরাহকারী) থাকে তবে এটি অক্ষম থাকে।

  • কীভাবে অ্যাকাউন্টগুলি মার্জ করবেন?

যদি কোনও ব্যবহারকারী কোনও নতুন তৃতীয় পক্ষের অ্যাকাউন্ট যা ইতিমধ্যে একটি স্থানীয় অ্যাকাউন্টের সাথে লিঙ্কযুক্ত করার চেষ্টা করেছে, আপনি কেবল তাদের দুটি অ্যাকাউন্টকে মার্জ করতে চান তা নিশ্চিত করার জন্য প্রম্পট করুন (ধরে নিলেন যে আপনি আপনার ডেটা সেটের সাথে এই জাতীয় সংযোজন পরিচালনা করতে পারবেন - প্রায়শই সহজ বলেছে চেয়ে সম্পন্ন)। মার্জ করার অনুরোধ করার জন্য আপনি তাদের একটি বিশেষ বোতামও সরবরাহ করতে পারেন তবে বাস্তবে, তারা যা করছেন তারা অন্য অ্যাকাউন্টকে সংযুক্ত করছেন।

এটি একটি দুর্দান্ত সরল মেশিন। ব্যবহারকারী তৃতীয় পক্ষ থেকে তৃতীয় পক্ষের অ্যাকাউন্ট আইডি নিয়ে ফিরে আসে। আপনার ডাটাবেস তিনটি রাজ্যের একটিতে থাকতে পারে:

  1. অ্যাকাউন্টটি স্থানীয় অ্যাকাউন্টের সাথে সংযুক্ত এবং কোনও সেশনের কুকি উপস্থিত নেই -> লগইন
  2. অ্যাকাউন্টটি স্থানীয় অ্যাকাউন্টের সাথে সংযুক্ত এবং একটি সেশন কুকি উপস্থিত রয়েছে -> মার্জ করুন ge
  3. অ্যাকাউন্টটি কোনও স্থানীয় অ্যাকাউন্টের সাথে লিঙ্ক করা হয়নি এবং কোনও সেশনের কুকি উপস্থিত নেই -> সাইনআপ
  4. অ্যাকাউন্টটি কোনও স্থানীয় অ্যাকাউন্টের সাথে লিঙ্ক করা হয়নি এবং একটি সেশন কুকি উপস্থিত রয়েছে -> অতিরিক্ত অ্যাকাউন্টের লিঙ্ক করা

    • তৃতীয় পক্ষের সরবরাহকারীদের সাথে কীভাবে অ্যাকাউন্ট পুনরুদ্ধার করবেন?

এটি এখনও পরীক্ষামূলক অঞ্চল। আমি এটির জন্য নিখুঁত ইউএক্স দেখিনি কারণ বেশিরভাগ পরিষেবা তৃতীয় পক্ষের অ্যাকাউন্টের পাশে স্থানীয় পাসওয়ার্ড উভয়ই সরবরাহ করে এবং তাই "আমার পাসওয়ার্ড ভুলে গেছেন" ব্যবহারের ক্ষেত্রে ফোকাস করে, অন্য কোনও কিছু যা ভুল হতে পারে তা নয়।

স্লেড সহ, আমরা "সাইন ইন সহায়তা প্রয়োজন?" ব্যবহার করতে বেছে নিয়েছি? এবং যখন আপনি ক্লিক করেন, ব্যবহারকারীকে তাদের ইমেল বা ব্যবহারকারীর নাম জিজ্ঞাসা করুন। আমরা এটি সন্ধান করি এবং যদি আমরা কোনও মিলের অ্যাকাউন্ট খুঁজে পাই, তবে সেই ব্যবহারকারীকে এমন একটি লিঙ্ক ইমেল করুন যা সেগুলি স্বয়ংক্রিয়ভাবে পরিষেবাতে লগইন করতে পারে (এক সময়ের জন্য ভাল)। একবার প্রবেশ করার পরে, আমরা তাদের সরাসরি অ্যাকাউন্ট লিঙ্কিং পৃষ্ঠায় নিয়ে যাই, তাদের বলি তাদের আরও নজর দেওয়া উচিত এবং অতিরিক্ত অ্যাকাউন্টগুলি সম্ভবত সংযুক্ত করা উচিত এবং তাদের ইতিমধ্যে সংযুক্ত তৃতীয় পক্ষের অ্যাকাউন্টগুলি প্রদর্শন করুন।


এই সমাধানটি আমার পক্ষে আরও ভাল, ধন্যবাদ!
রায় শোয়া

2
সেশন কুকি ব্যবহারকারীকে সনাক্ত করার জন্য যথেষ্ট ভাল নয় good যদি অন্য ব্যবহারকারী একই ডিভাইস ব্যবহার করেন?
ডিপ ব্লু

23

অ্যাকাউন্টগুলিকে স্বয়ংক্রিয়ভাবে মার্জ করার জন্য উভয় পন্থা একটি দুর্দান্ত বড় দুর্বলতা ছেড়ে দেয় যা কাউকে অ্যাকাউন্ট গ্রহণ করার অনুমতি দেয়। তারা উভয়ই এই ধারণাটি অনুভব করে যে তারা একজন ব্যবহারকারী যাঁরা যখন তারা নিবন্ধী ব্যবহারকারীর কাছে মার্জ বিকল্পটি সরবরাহ করে তখন তারা বলে।

দুর্বলতা প্রশমিত করার জন্য আমার সুপারিশটি হ'ল ব্যবহারকারীর পরিচয় যাচাই করার জন্য মার্জ করার আগে পরিচিত পরিচয় সরবরাহকারীর সাথে পরিচিতির অনুরোধ করা।

উদাহরণ: ব্যবহারকারী এ ফেসবুক পরিচয় দিয়ে রেজিস্টার করে। কিছু সময় পরে তারা আপনার সাইটে ফিরে যায় এবং উইন্ডোজ লাইভ আইডি ব্যবহার করে নিবন্ধকরণ প্রক্রিয়া শুরু করার চেষ্টা করে। আপনার সাইটটি ব্যবহারকারী এটিকে অনুরোধ করবে ... দেখে মনে হচ্ছে আপনি আগে ফেসবুকে নিবন্ধভুক্ত করেছেন। দয়া করে ফেসবুকে লগইন করুন (লিঙ্ক সরবরাহ করুন) এবং আমরা আপনার বিদ্যমান প্রোফাইলের সাথে আপনার উইন্ডোজ লাইভ আইডি একীভূত করতে পারি।

আর একটি বিকল্প হ'ল পরিচয় মার্জ করার সময় ব্যবহারকারীকে যে প্রারম্ভিক রেজিস্ট্রেশন করতে হবে তা অবশ্যই একটি শেয়ার্ড সিক্রেট (পাসওয়ার্ড / ব্যক্তিগত প্রশ্ন) সংরক্ষণ করুন, তবে এটি আপনাকে ভাগ করা গোপনীয়তা সংরক্ষণের ব্যবসায় ফিরিয়ে আনবে। এর অর্থ হ'ল আপনাকে এমন পরিস্থিতিটি পরিচালনা করতে হবে যেখানে ব্যবহারকারী ভাগ করা গোপনীয়তা এবং এর সাথে যে ওয়ার্কফ্লোটি স্মরণ করে না।


আপনি যদি সরবরাহকারীর কাছ থেকে কোনও ইমেল ঠিকানা না পান তবে আপনি কী করবেন?
fred.kassi

1

বেশিরভাগ পোস্ট বেশ পুরানো এবং আমার ধারণা Google এর ফ্রি ফায়ারবেস প্রমাণীকরণ পরিষেবাটি এখনও ছিল না yet ওআউথের সাথে যাচাই করার পরে, আপনি এতে ওআউথ টোকনটি পাস করেন এবং একটি অনন্য ব্যবহারকারী আইডি পাবেন যা আপনি রেফারেন্সের জন্য সঞ্চয় করতে পারেন। সমর্থিত সরবরাহকারী হলেন গুগল, ফেসবুক, টুইটার, গিটহাব এবং কাস্টম এবং বেনামে সরবরাহকারীদের নিবন্ধ করার বিকল্প রয়েছে।


এমন কিছু ব্যবহার রয়েছে যেখানে ভাবা হয়েছে যেখানে ফায়ারবেসটি বোঝায় না। উদাহরণস্বরূপ ইন্ট্রনেট সিস্টেমগুলিতে যার পরে আরও একটি লগইন থাকে ..
বোস্টউইক

0

উপরের দুর্দান্ত উত্তর এবং সংস্থানগুলি। আমার অবদানের সংক্ষিপ্তসার এখানে দেওয়া হয়েছে ... https://github.com/ জাভাস্ক্রিপ্টমিক / অ্যালারিট্রি.আর / ব্লব / মাস্টার / ডিজাইন / শ্মেমা.এমডি

টিএলডিআর: পৃথক অ্যাকাউন্ট এবং ব্যক্তি স্কিমা। অ্যাকাউন্ট, ইমেল এবং OAuth এর 2 টি রূপ।

অ্যাকাউন্ট - প্রমাণীকৃত-> ব্যক্তি


-4

আপনার এক অ্যাকাউন্ট থেকে লগইন করার অনুমতি দেওয়া উচিত , তারপরে লগ ইন করার সাথে এটির সাথে একত্রীকরণের জন্য বিভিন্ন অন্যান্য অ্যাকাউন্ট যুক্ত করার বিকল্প দিন।


4
এবং ব্যবহারকারী যদি এটি না করে এবং 4 টি স্বতন্ত্র অ্যাকাউন্টের সাথে নিজেকে খুঁজে পায় তবে কী ঘটে? আপনি কীভাবে এমন একটি আর্কিটেকচার তৈরি করবেন যা এই ক্ষেত্রে একত্রীকরণের অনুমতি দেয়?
ডেভিড বোইক

আপনার প্রয়োজনের উপর নির্ভর করে এটি আসলে একটি বৈধ পরামর্শ হতে পারে। আমি কেবল তাদের সতর্ক করতে চাই যারা অ্যাকাউন্টগুলি মার্জ করে বা লিঙ্ক করে তা পরে হিসাবে হিসাবে সম্পন্ন করা যেতে পারে: আপনি যদি বিশ্বাস করেন এটি এটি এমন কিছু যা পরে আপনি চান তবে আপনি আপনার ডাটাবেস ডিজাইনের সাথে শুরুতে নিজেকে প্রস্তুত করতে চাইবেন: এক বিকল্পটি হ'ল একটি ইউজার গ্রুপ এবং ইউজারম্যাপিং। আপনি ওআউথ ব্যবহারকারী আইডি বা ইমেল এবং পাসওয়ার্ড ব্যবহারকারী আইডি কোনও ব্যবহারকারী গোষ্ঠীতে ম্যাপ করতে পারেন।
বাম্বলবি 2na
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.