Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रेल्स में महारत हासिल करना:ओमनीऑथ, एपीआई ऑथ, और ऑथट्रेल

<पी> इस श्रृंखला के भाग एक में, हमने मॉड्यूल, सहायक, दृश्य, नियंत्रक और मार्गों का पता लगाने के लिए एक उदाहरण ऐप का उपयोग करके डेविस पेश किया।

<पी> इस भाग में, हम डेविस के अधिक उन्नत उपयोगों का पता लगाएंगे, विशेष रूप से ओमनीऑथ, एपीआई प्रमाणीकरण और ऑथट्रेल का उपयोग।

<पी> आइए सीधे गोता लगाएँ!

रूबी के लिए ओमनीऑथ के साथ प्रमाणीकरण

<पी> आजकल, आपके सामने आने वाला लगभग हर वेब एप्लिकेशन आपको ट्विटर और फेसबुक जैसे सोशल नेटवर्क से लेकर Google, GitHub और कई अन्य प्रमाणीकरण प्रदाताओं के विस्तृत चयन के माध्यम से लॉग इन करने का विकल्प प्रदान करेगा।

<पी> कई मामलों में, यह सुविधाजनक बहु-प्रदाता प्रमाणीकरण ओमनीऑथ नामक लाइब्रेरी द्वारा संचालित होता है। ओमनीऑथ रूबी के लिए एक लचीली और शक्तिशाली प्रमाणीकरण लाइब्रेरी है जो आपको कई बाहरी प्रदाताओं के साथ एकीकृत करने की अनुमति देती है।

<पी> यह विभिन्न OAuth प्रदाताओं से जुड़ने के लिए एक सरल और एकीकृत एपीआई प्रदान करता है। ओमनीऑथ उन स्थितियों में विशेष रूप से उपयोगी है जहां आप अपने उपयोगकर्ताओं को उनके सोशल मीडिया खातों का उपयोग करके साइन अप या लॉग इन करने का विकल्प देना चाहते हैं। ओमनीऑथ के साथ, आप आसानी से अपने रेल एप्लिकेशन में सामाजिक लॉगिन कार्यक्षमता जोड़ सकते हैं।

<पी> जब ओमनीऑथ का उपयोग डेविस रत्न के साथ किया जाता है, तो उपयोगकर्ता प्रमाणीकरण और प्राधिकरण को प्रबंधित करना और भी आसान हो जाता है। बाहरी प्रदाता साइन-इन विकल्पों के लिए ओमनीऑथ का उपयोग करते समय आप डेविस की अंतर्निहित प्रमाणीकरण सुविधाओं का लाभ उठा सकते हैं।

OmniAuth और डेविस के साथ शुरुआत करना

<पी> जैसा कि उल्लेख किया गया है, ओमनीऑथ आपको कई तृतीय-पक्ष प्रमाणीकरण प्रदाताओं के साथ एकीकृत करने की अनुमति देता है। इस लेख के प्रयोजनों के लिए, हम GitHub का उपयोग करेंगे।

OmniAuth Gems इंस्टॉल करें

<पी> आपके ऐप के Gemfile में , निम्नलिखित पंक्तियाँ जोड़ें:

 <पी> और यदि आप ओमनीऑथ 2.0+ रत्न का उपयोग कर रहे हैं, तो आपको यह भी जोड़ना होगा:

 <पी> omniauth-rails_csrf_protection रत्न यह सुनिश्चित करता है कि कोई भी GET OAuth प्रवाह के अनुरोध अक्षम हैं। यह OAuth अनुरोध चरण से पहले एक रेल CSRF टोकन सत्यापनकर्ता भी सम्मिलित करता है। ये दो कार्रवाइयां OAuth प्रमाणीकरण प्रवाह के उद्देश्य से क्रॉस-साइट जालसाजी हमलों को कम करने के लिए हैं।

<पी> इसके बाद, bundle install चलाएँ रत्न स्थापित करने के लिए.

एक नया GitHub OAuth ऐप बनाएं

<पी> अब हमें GitHub पर एक नया OAuth ऐप बनाना होगा। यह ऐप प्रमाणीकरण अनुमतियों वाले उपयोगकर्ता के रूप में कार्य करेगा जिसे आवश्यकता पड़ने पर आसानी से रद्द किया जा सकता है।

<पी> पहला कदम आपके GitHub खाता प्रोफ़ाइल के अंतर्गत सेटिंग पृष्ठ पर जाना है। फिर, बाईं ओर के मेनू पर, "डेवलपर सेटिंग्स" पर क्लिक करें। आपको नीचे दी गई स्क्रीन जैसी एक स्क्रीन दिखाई देगी, जहां आप एक नया OAuth ऐप बना सकते हैं:

<पी> रेल्स में महारत हासिल करना:ओमनीऑथ, एपीआई ऑथ, और ऑथट्रेल

<पी> जब आप "नया एप्लिकेशन पंजीकृत करें" पर क्लिक करेंगे, तो आपको इस तरह की एक स्क्रीन मिलेगी:

<पी> रेल्स में महारत हासिल करना:ओमनीऑथ, एपीआई ऑथ, और ऑथट्रेल

<पी> फॉर्म का विवरण इस प्रकार भरें:

  • आवेदन का नाम - अपने नए OAuth ऐप को एक उचित नाम दें।
  • होमपेज यूआरएल - अभी के लिए, http://localhost:3000/ का उपयोग करें . उत्पादन में, आप अपने ऐप के वास्तविक होमपेज यूआरएल का उपयोग करेंगे।
  • आवेदन विवरण - आवश्यक नहीं है, लेकिन यदि आपके पास कई ऐप्स हैं और आपको उनके बीच अंतर करने की आवश्यकता है तो आप अभी भी एक ले सकते हैं।
  • प्राधिकरण कॉलबैक यूआरएल - यह आवश्यक इनपुट है और आम तौर पर http://<app-url>/users/auth/<application-provider>/callback जैसे OAuth कॉलबैक यूआरएल प्रारूप का पालन करेगा . जैसा कि कहा गया है, Google जैसे कुछ OAuth प्रदाता इस प्रारूप का पालन नहीं कर सकते हैं, इसलिए आपको इस पर ध्यान देने की आवश्यकता है।
<पी> ऐसा करने के बाद, "रजिस्टर एप्लिकेशन" पर क्लिक करें। निम्नलिखित स्क्रीन में, एक नया ऐप सीक्रेट जनरेट करें और इसे किसी सुरक्षित स्थान पर नोट कर लें (क्योंकि यह आपको केवल एक बार दिखाया जाएगा)।

डिवाइस इनिशियलाइज़र कॉन्फ़िगर करें

<पी> डेविस इनिशियलाइज़र config/initializers/devise.rb खोलें और GitHub के लिए विशिष्ट ओमनीऑथ अनुभाग पर नेविगेट करें। इस पर टिप्पणी किए जाने की संभावना है, इसलिए इसे अनटिप्पणी करें और इसे अपने नए GitHub OAuth ऐप की आईडी और रहस्य के साथ संपादित करें:

 

OmniAuth कॉलबैक नियंत्रक बनाएं

<पी> यदि आपने पहले ही डेविस कंट्रोलर जेनरेट कर लिया है, तो आपको OmniauthCallbacksController मिलेगा आपके अनुसार अनुकूलित करने के लिए तैयार है। यदि आपका वहां नहीं है, तो बस मैन्युअल रूप से एक बनाएं, और इसे निम्नानुसार संपादित करें:

 <पी> उपरोक्त कोड के बारे में ध्यान देने योग्य कुछ बातें:

  • from_omniauth यह एक ऐसी विधि है जिसे हम अपने User के अंदर लागू करेंगे मॉडल.
  • sign_in_and_redirect OAuth के अंदर एक विधि है।

उपयोगकर्ता मॉडल को संशोधित करने के लिए एक माइग्रेशन जोड़ें

<पी> अब हमें उपयोगकर्ता मॉडल में कुछ कॉलम जोड़ने की जरूरत है, विशेष रूप से provider कॉलम और एक uid कॉलम:

 <पी> bundle exec rails db:migrate चलाएँ इस चरण को अंतिम रूप देने के लिए।

डिवाइस मॉडल को सर्वव्यापी बनाएं

<पी> यहां, हमें अपना User संपादित करना होगा इसमें डेविस ओमनीऑथेबल मॉड्यूल जोड़कर मॉडल बनाएं:

 <पी> इसके बाद from_omni_auth जोड़ें विधि. इसे Users::OmniauthCallbacksController से कॉल किया जाएगा जिसे हमने अभी स्थापित किया है:

 <पी> अब हमारे पास बस एक और चीज़ बची है:हमारे डेविस व्यूज़ में लॉगिन लिंक जोड़ना।

लॉगिन लिंक सेटअप करें

<पी> डिफ़ॉल्ट रूप से, डेविस स्वचालित रूप से उपयोगकर्ता पंजीकरण और लॉगिन दृश्यों में आपके लिए उपयुक्त प्रदाता का लॉगिन लिंक जोड़ देगा। यह लिंक GET का उपयोग करेगा विधि, लेकिन हम जानते हैं कि ओमनीऑथ 2.0+ POST को प्राथमिकता देता है अनुरोध. इसलिए, हमें लिंक को अक्षम करना होगा और POST का उपयोग करके अपना स्वयं का लिंक डालना होगा अनुरोध:

 <पी> इसके साथ, हमने डेविस और गिटहब ओएथ प्रमाणीकरण के साथ रूबी ऑन रेल्स 7 ऐप को सफलतापूर्वक स्थापित किया है। आप सहयोगी ऐप का पूरा स्रोत कोड यहां से प्राप्त कर सकते हैं।

<पी> इसके बाद, हम एक और उन्नत उपयोग के मामले में उतरेंगे:एपीआई कॉल को प्रमाणित करने के लिए डेविस का उपयोग करना।

रूबी के लिए डेविस के साथ एपीआई प्रमाणीकरण

<पी> आज, उपयोगकर्ताओं के लिए एपीआई के माध्यम से आपके ऐप से जुड़ने में सक्षम होने की उम्मीद करना असामान्य नहीं है। इस अनुभाग में, हम देखेंगे कि हम डेविस का उपयोग करके ऐसे उपयोगकर्ता अनुरोधों को सुरक्षित रूप से कैसे प्रमाणित कर सकते हैं।

<पी> जहां ब्राउज़र-आधारित प्रमाणीकरण आम तौर पर कुकी-आधारित होता है, अधिकांश एपीआई प्रमाणीकरण JSON वेब टोकन (या बस JWTs) नामक टोकन के माध्यम से होता है, जो हेडर में पास किए जाते हैं।

<पी> टिप :इस अनुभाग के प्रयोजनों के लिए, हम मान लेंगे कि हम केवल रेल एपीआई ऐप के साथ काम कर रहे हैं। आगे बढ़ने के लिए, rails new app_name --api के साथ एक बनाएं

JWT-आधारित प्रमाणीकरण प्रवाह

<पी> जैसा कि हमने बताया, एपीआई प्रमाणीकरण JWT टोकन पर आधारित है, और यह महत्वपूर्ण है कि हम समझें कि JWT-आधारित प्रमाणीकरण प्रवाह कैसे होता है। मूल रूप से, यह नीचे बताए अनुसार चरणों के एक सामान्य अनुक्रम का अनुसरण करता है:

  • एक उपयोगकर्ता क्लाइंट एपीआई ऐप पर कॉल करता है।
  • एपीआई ऐप JSON वेब टोकन (JWT) के साथ प्रतिक्रिया करता है, एक प्रमाणीकरण टोकन जिसका उपयोग कुकीज़ के स्थान पर किया जा सकता है।
  • उपयोगकर्ता क्लाइंट द्वारा बाद के अनुरोध Authorization में इस टोकन का उपयोग करके किए जाते हैं हेडर.
  • इसके बाद उपयोगकर्ता डेविस 'सत्र नष्ट' कार्रवाई कर सकता है, जिसके परिणामस्वरूप टोकन नष्ट हो जाता है और उपयोगकर्ता लॉग आउट हो जाता है।
<पी> अब, आइए इस प्रवाह को क्रियान्वित करें, जिसे क्रॉस-ओरिजिनल रिसोर्स शेयरिंग (CORS) कहा जाता है, से शुरू करें।

CORS सेट करना

<पी> CORS बाहरी स्रोतों से अनुरोधों की अनुमति देने के लिए हमारा एपीआई ऐप सेट करता है। CORS एक HTTP-आधारित सुरक्षा नीति है जो परिभाषित करती है कि आपके एप्लिकेशन द्वारा बाहरी अनुरोधों को कैसे संभाला जाएगा। डिफ़ॉल्ट रूप से, CORS किसी भी ऐसे अनुरोध को ब्लॉक कर देगा जो प्रारंभिक अनुरोध करने वाले डोमेन से भिन्न डोमेन से उत्पन्न होता है (दूसरे शब्दों में, एक अलग "मूल" से आने वाला अनुरोध)।

<पी> सीओआरएस को ठीक से संभालने के लिए, हम निफ्टी रत्न rack-cors का उपयोग करेंगे . Gemfile में , नीचे दी गई पंक्ति को अनटिप्पणी करें, फिर bundle install चलाएँ :

 <पी> इसके अलावा, संबंधित CORS इनिशियलाइज़र फ़ाइल खोलें और इसे नीचे दिए अनुसार संशोधित करें:

 <पी> हमने अभी जो किया है उसके बारे में कुछ महत्वपूर्ण नोट्स:

  • origins "*" - इसका सीधा सा मतलब है कि हमारा एपीआई ऐप अब किसी अन्य स्रोत से अनुरोध प्राप्त कर सकता है।
  • expose: %w[Authorization Uid] - डिफ़ॉल्ट रूप से, rack-cors रत्न प्राधिकरण और यूआईडी हेडर को उजागर नहीं करता है, लेकिन हमें उनकी आवश्यकता है क्योंकि हम प्राधिकरण टोकन पारित करेंगे।
<पी> यह हो जाने के बाद, आइए डेविस और उसके साथ आने वाले डेविस-जेडब्ल्यूटी रत्न को स्थापित करें।

अपने रेल ऐप में डेविस और डेविस-जेडब्ल्यूटी रत्न जोड़ें

<पी> devise-jwt जेम डेविस का एक विस्तार है जो हमें जेडब्ल्यूटी टोकन के साथ काम करने की अनुमति देगा। रत्नों को Gemfile में जोड़ें , फिर bundle install चलाएँ :

 <पी> डेविस इंस्टाल जेनरेटर bundle exec rails g devise:install चलाएँ .

मॉडल बनाएं और कॉन्फ़िगर करें

<पी> हमें दो मॉडल स्थापित करने की आवश्यकता है:सामान्य डेविस उपयोगकर्ता मॉडल (bundle exec rails g devise User ), और एक मॉडल जिसे हम निरस्तीकरण रणनीति के लिए उपयोग करेंगे (दूसरे शब्दों में, उपयोगकर्ता एपीआई से कैसे साइन आउट करेगा):

 <पी> हम JWT टोकन प्रामाणिक मॉड्यूल को जोड़कर और हमारे दूसरे मॉडल, JwtDenylist का उपयोग करने के लिए टोकन निरस्तीकरण रणनीति को परिभाषित करके एपीआई प्रमाणीकरण के लिए सामान्य डेविस उपयोगकर्ता मॉडल को संशोधित करते हैं। :

 <पी> इसके बाद, हम निरस्तीकरण रणनीति और उपयोग की जाने वाली निरस्तीकरण तालिका का संदर्भ देकर अपने दूसरे मॉडल को कॉन्फ़िगर करते हैं:

 <पी> निम्नलिखित अनुभाग में, हम टोकन निरस्तीकरण की रूपरेखा तैयार करेंगे और हमें इसकी आवश्यकता क्यों है।

टोकन निरस्तीकरण का महत्व

<पी> टोकन निरस्तीकरण क्यों महत्वपूर्ण है? क्योंकि JWT टोकन स्टेटलेस हैं। सर्वर उन पर हस्ताक्षर करने के अलावा उनके बारे में कुछ नहीं जानता है। ऐसे परिदृश्य में, सर्वर के पास संबंधित टोकन को रद्द करके उपयोगकर्ता को साइन आउट करने का कोई तरीका नहीं है। चूंकि अलग-अलग टोकन को रद्द करने का कोई तरीका नहीं है, इसलिए हमें एक टोकन बनाना होगा और सर्वर को इसका उपयोग करने के लिए कहना होगा।

<पी> किसी टोकन को रद्द करते समय, वास्तव में हुड के नीचे क्या हो रहा है वह टोकन का एक अनूठा टुकड़ा, jti है (JWT ID), परिभाषित निरस्तीकरण रणनीति के अनुसार निकाला और उपयोग किया जाता है।

<पी> बेशक, इससे एक और सवाल उठता है कि टोकन निरस्तीकरण रणनीति क्या है। संक्षेप में, यह इस बात की परिभाषा है कि आपके सर्वर द्वारा टोकन निरस्तीकरण को कैसे संभाला जाएगा। निरस्तीकरण की तीन बुनियादी रणनीतियाँ हैं:

  • JTIMatcher रणनीति - यहां, उपयोगकर्ता मॉडल में "jti" नामक एक अद्वितीय कॉलम जोड़ा गया है, जो निरस्तीकरण तालिका के रूप में भी कार्य करता है। जब भी कोई उपयोगकर्ता कोई अनुरोध करता है, तो jti हेडर में संग्रहीत टोकन के विरुद्ध मिलान किया जाता है और मिलान पाए जाने पर ही पहुंच की अनुमति दी जाती है।
  • अस्वीकार करने की रणनीति - इसके लिए, jti और टोकन समाप्ति (exp निरस्त किए गए टोकन) को एक डेटाबेस तालिका में संग्रहीत किया जाता है। उपयोगकर्ता द्वारा किए गए प्रत्येक अनुरोध के लिए, उपयोगकर्ता के वर्तमान टोकन jti की तुलना करते हुए इस तालिका के विरुद्ध एक जांच की जाती है। डेटाबेस में निरस्त किए गए लोगों के विरुद्ध। यदि कोई मिलान पाया जाता है, तो उस उपयोगकर्ता के अनुरोध अस्वीकार कर दिए जाते हैं।
  • अनुमति सूची रणनीति - एक तरह से, यह रणनीति पहली रणनीति के समान है, सिवाय इसके कि यहां JWT आईडी संग्रहीत करने वाली तालिका उपयोगकर्ता टोकन संग्रहीत करने वाली किसी अन्य तालिका के साथ एक-से-अनेक संबंध में है। जब भी कोई अनुरोध किया जाता है, तो उपयोगकर्ता का jti होता है अनुमति सूची तालिका में संग्रहीत का मिलान टोकन के साथ मिलान तालिका में संग्रहीत सामग्री से किया जाता है। मिलान पाए जाने पर ही प्रवेश की अनुमति है।
<पी> जाहिर है, यह टोकन निरस्तीकरण का एक बहुत ही सरलीकृत अवलोकन है, और आप इसके बारे में यहां अधिक जान सकते हैं।

JWT टोकन के लिए एक साइनिंग कुंजी सेट करें

<पी> चूँकि हम उपयोगकर्ताओं और उनके अनुरोधों को प्रमाणित करने के लिए सुरक्षित टोकन का उपयोग करेंगे, इसलिए हमें उन पर हस्ताक्षर करने का एक तरीका चाहिए। यहीं पर हमारी गुप्त कुंजी आती है। यह अनुशंसा की जाती है कि आप रेल गुप्त कुंजी, secret_key_base से भिन्न एक नई कुंजी उत्पन्न करें। .

<पी> bundle exec rake secret चलाएँ एक अद्वितीय कुंजी उत्पन्न करने के लिए, फिर इस कुंजी को शामिल करने के लिए डेविस इनिशियलाइज़र को संपादित करें:

 <पी> अंत में, आइए नियंत्रकों को सेट करें।

नियंत्रक सेट अप

<पी> एपीआई प्रमाणीकरण के लिए डेविस को लागू करने का अंतिम चरण हमारे नियंत्रकों को स्थापित करना है। सरलता के लिए, हम दो नियंत्रक स्थापित करेंगे:एक पंजीकरण को संभालने के लिए और दूसरा सत्रों के लिए।

<पी> आइए इन्हें पंजीकरण नियंत्रक से शुरू करते हुए मैन्युअल रूप से बनाएं:

 <पी> इस नियंत्रक के साथ क्या हो रहा है यह यहां बताया गया है:

  • हम इसे JSON के साथ अनुरोधों का जवाब देने के लिए कॉन्फ़िगर करते हैं।
  • हम एक respond_with निर्दिष्ट करते हैं वह क्रिया जो सफल या असफल पंजीकरण का परिणाम लौटाती है।
<पी> और अब सत्र नियंत्रक के लिए:

 <पी> पंजीकरण नियंत्रक की तरह, यहां हम निर्दिष्ट करते हैं कि नियंत्रक JSON के साथ प्रतिक्रिया देगा। हम एक respond_with भी परिभाषित करते हैं जब कोई उपयोगकर्ता सफलतापूर्वक लॉग इन करता है और respond_to_on_destroy के लिए कार्रवाई साइन आउट करने वाले उपयोगकर्ता को संभालने के लिए।

<पी> और इसके साथ, आपके पास डेविस और जेडब्ल्यूटी टोकन द्वारा संचालित एक कार्यशील एपीआई प्रमाणीकरण प्रवाह होना चाहिए! <पी> हमारा अंतिम अनुभाग इस पर एक त्वरित नज़र डालेगा कि आप डेविस और ऑथट्रेल का उपयोग करके उपयोगकर्ता लॉगिन को कैसे ट्रैक कर सकते हैं।

ऑथट्रेल के साथ डेविस लॉगिन को ट्रैक करना

<पी> मान लीजिए कि आप अपने ऐप उपयोगकर्ताओं को एक अधिसूचना ईमेल भेजना चाहते हैं जब भी कोई उनके खाते में लॉग इन करता है, जिसमें आईपी पता और लॉगिन के टाइमस्टैम्प जैसे विवरण शामिल होते हैं। आप इसे कैसे पूरा कर सकते हैं?

<पी> आपको उपयोगकर्ता लॉगिन को ट्रैक करना होगा, फिर उस जानकारी का उपयोग अपने उपयोगकर्ताओं को भेजे जाने वाले अधिसूचना ईमेल में करना होगा। लेकिन सबसे पहले, आपको उपयोगकर्ता लॉगिन को ट्रैक करने का एक तरीका चाहिए होगा। इसे ऑथट्रेल नामक एक बेहतरीन रत्न का उपयोग करके पूरा किया जा सकता है, जो डेविस के साथ भी अच्छी तरह मेल खाता है।

ऑथट्रेल स्थापित करना

<पी> पहला कदम रत्न को bundle add authtrail के साथ स्थापित करना है . इसके अतिरिक्त, चूंकि आप अपने ऐप डेटाबेस में ईमेल और आईपी पते जैसी उपयोगकर्ता-पहचान योग्य जानकारी संग्रहीत करेंगे, इसलिए यह अत्यधिक अनुशंसित है कि आप लॉकबॉक्स और ब्लाइंडेक्स रत्नों के संयोजन का उपयोग करके इस डेटा को उत्पादन में एन्क्रिप्ट करें।

<पी> इसके बाद, इसके इनिशियलाइज़र और एक संलग्न तालिका माइग्रेशन बनाने के लिए ऑथट्रेल जनरेटर चलाएं जो लॉगिन डेटा संग्रहीत करेगा:

 

ऑथट्रेल कैसे काम करता है

<पी> जब भी कोई उपयोगकर्ता लॉग इन करने का प्रयास करता है, तो निम्नलिखित महत्वपूर्ण विवरणों के साथ एक नया ऑथट्रेल रिकॉर्ड बनाया जाता है:

  • उपयोग किया गया लॉगिन ईमेल पता
  • लॉगिन सफल हुआ या नहीं
  • लॉगिन विफल होने का कारण (यदि लॉगिन विफल था)
  • उपयोगकर्ता का आईपी पता, referrer , और भी बहुत कुछ
<पी> फिर आप इस जानकारी का अपनी इच्छानुसार उपयोग कर सकते हैं। उदाहरण के लिए, आप किसी उपयोगकर्ता को ईमेल और आईपी पते की जानकारी सहित एक अधिसूचना ईमेल भेज सकते हैं, ताकि उन्हें पता चल सके कि उनके खाते पर लॉगिन का प्रयास किया गया था।

<पी> आपके लिए उपलब्ध सभी संभावनाओं को देखने के लिए ऑथट्रेल के दस्तावेज़ देखें।

समापन

<पी> इस श्रृंखला में, हमने डेविस रत्न के बारे में गहराई से जानकारी ली।

<पी> सबसे पहले, हमने डेविस की बुनियादी बातों को समझा, जिसमें इसके मॉड्यूल, सहायक, दृश्य, नियंत्रक और मार्ग कैसे काम करते हैं। इस दूसरे और अंतिम भाग में, हमने पता लगाया कि OAuth, Authtrail और API प्रमाणीकरण के लिए डेविस का उपयोग कैसे करें।

<पी> उम्मीद है, यह श्रृंखला डेविस प्रमाणीकरण की सभी चीजों के लिए एक सहायक मार्गदर्शिका के रूप में काम करेगी।

<पी> हैप्पी कोडिंग!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें!
  1. कॉलिंग Tk() वास्तव में क्या करती है? कॉलिंग Tk() वास्तव में क्या करती है?

    टिंकर एक पायथन पैकेज है जो कई कार्यों और विधियों के साथ आता है जिनका उपयोग एप्लिकेशन बनाने के लिए किया जा सकता है। टिंकर एप्लिकेशन बनाने के लिए, हम आम तौर पर टिंकर फ्रेम का एक उदाहरण बनाते हैं, अर्थात, Tk() . यह रूट विंडो को प्रदर्शित करने में मदद करता है और टिंकर एप्लिकेशन के अन्य सभी घटकों का प्रब

  1. सी ++ में ऐरे कार्यान्वयन के साथ बाइनरी ट्री सी ++ में ऐरे कार्यान्वयन के साथ बाइनरी ट्री

    एक बाइनरी ट्री एक विशेष प्रकार का पेड़ है जिसमें पेड़ के प्रत्येक नोड में अधिकतम दो चाइल्ड नोड हो सकते हैं। इन चाइल्ड नोड्स को राइट चाइल्ड और लेफ्ट चाइल्ड के रूप में जाना जाता है। एक साधारण बाइनरी ट्री है - पेड़ों का प्रतिनिधित्व करने के दो तरीके हैं, गतिशील नोड प्रतिनिधित्व जो लिंक की गई सूची

  1. एंड्रॉइड स्क्लाइट में दो कॉलम कैसे सम्मिलित करें? एंड्रॉइड स्क्लाइट में दो कॉलम कैसे सम्मिलित करें?

    एक उदाहरण में जाने से पहले, हमें पता होना चाहिए कि android में sqlite डेटाबेस क्या है। SQLite एक ओपन सोर्स SQL ​​डेटाबेस है जो किसी डिवाइस पर टेक्स्ट फ़ाइल में डेटा स्टोर करता है। Android अंतर्निहित SQLite डेटाबेस कार्यान्वयन के साथ आता है। SQLite सभी रिलेशनल डेटाबेस सुविधाओं का समर्थन करता है। इस ड