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

क्लीयरेंस का उपयोग कर रेल में प्रमाणीकरण

थॉटबॉट में टीम द्वारा निर्मित ईमेल और पासवर्ड के साथ क्लीयरेंस एक सरल प्रमाणीकरण प्रणाली है। इसमें डिफॉल्ट्स की राय है लेकिन इसका उद्देश्य ओवरराइड करना आसान है। सिस्टम सक्रिय रूप से बनाए रखा गया है, और आप गिटहब पर अनुवर्ती कार्रवाई कर सकते हैं।

इस ट्यूटोरियल में, आप देखेंगे कि क्लीयरेंस को रेल एप्लिकेशन में कैसे एकीकृत किया जाए। हम एक लघु अनुप्रयोग का उपयोग करेंगे। चलो शुरू करें!

आरंभ करना

आप अपना रेल एप्लिकेशन जनरेट करके शुरू करेंगे। इस ट्यूटोरियल के उद्देश्य के लिए, मैं अपना नाम tutsplus-clearance . रखूंगा ।

रेल न्यू टट्सप्लस-क्लीयरेंस -टी

वह जादू करेगा।

अपने एप्लिकेशन को अच्छा दिखाने के लिए आपको बूटस्ट्रैप की आवश्यकता होगी। बूटस्ट्रैप रत्न को अपने Gemfile . में जोड़ें ।

#Gemfile...मणि 'बूटस्ट्रैप-एसएएस'

bundle install running चलाकर रत्न इंस्टॉल करें ।

अब application को संशोधित करें . scss इस तरह दिखने के लिए:

#app/assets/stylesheets/application.scss@import 'bootstrap-sprockets';@import 'bootstrap';

निकासी सेटअप

अपना Gemfileखोलें क्लीयरेंस रत्न जोड़ने के लिए।

#Gemfilegem 'क्लीयरेंस'

अब रत्न स्थापित करें।

bundle install

इस बिंदु पर, clearance . स्थापित करने के लिए जेनरेटर कमांड चलाएँ ।

rails generate clearance:install

यह आपके टर्मिनल पर कुछ आउटपुट उत्पन्न करेगा, जो मेरे नीचे जैसा दिखता है:

config/initializers/clearance.rb बनाएं ऐप/कंट्रोलर/application_controller.rb डालें ऐप/मॉडल/user.rb बनाएं db/migrate/20161115101323_create_users.rb**************** बनाएं *********************************************** *************** अगले चरण:1. ईमेल में पूर्ण URL बनाने के लिए मेलर को कॉन्फ़िगर करें:# config/environments/{Development,test}.rb config.action_mailer.default_url_options ={host:'localhost:3000' } उत्पादन में यह आपके ऐप का डोमेन नाम होना चाहिए।2। उपयोगकर्ता सत्र और चमक प्रदर्शित करें। उदाहरण के लिए, आपके एप्लिकेशन लेआउट में:<% ifsigned_in? %> के रूप में साइन इन किया गया:<%=current_user.email%> <%=button_to 'साइन आउट', साइन_आउट_पाथ, विधि::delete%> <% और%> <%=link_to 'साइन इन', साइन_इन_पथ%> <% अंत %> 
<% flash.each do |key, value| %>
<%=value %>
<% end %>
3. माइग्रेट करें:रेक डीबी:माइग्रेट करें****************************** *******************************

जब आपने आदेश चलाया, तो आपके आवेदन में कुछ फाइलें उत्पन्न हुईं। ऐसी ही एक फाइल है क्लीयरेंस.आरबी, जिसे आप config/initializers . में पा सकते हैं निर्देशिका। ए User मॉडल भी बनाया गया था, और इसके साथ ही आपके पास एक माइग्रेशन फ़ाइल भी है जो इस तरह दिखती है:

वर्ग CreateUsers  

आउटपुट के अनुसार, पहली चीज जो आप करना चाहते हैं वह है अपने कॉन्फिग एनवायरनमेंट को एडिट करना। ऐसा करने के लिए, config/environments/development.rb पर नेविगेट करें और नीचे की पंक्ति जोड़ें, end . के ठीक ऊपर सीमांकक।

... config.action_mailer.default_url_options ={होस्ट:'लोकलहोस्ट:3000' }अंत

इसके बाद, config/initializers/clearance.rb पर नेविगेट करें इसे संपादित करने के लिए, और जब आप वहां हों, तो प्रेषक के ईमेल पते को डिफ़ॉल्ट से अपनी किसी भी पसंद में बदलें। फ़ाइल खोलने पर आप यही देखेंगे।

#config/initializers/clearance.rbClearance.configure do |config| config.mailer_sender ="[email protected]"end

आप निम्न कोड स्निपेट में पेस्ट करके और इसे अपनी आवश्यकताओं के अनुसार कॉन्फ़िगर करके डिफ़ॉल्ट कॉन्फ़िगरेशन को ओवरराइड कर सकते हैं।

#config/initializers/clearance.rbClearance.configure do |config| config.allow_sign_up =सच config.cookie_domain =".example.com" config.cookie_expiration =लैम्ब्डा {|कुकीज| 1.year.from_now.utc } config.cookie_name ="remember_token" config.cookie_path ="/" config.routes =true config.httponly =false config.mailer_sender ="[email protected]" config.password_strategy =Clearance::PasswordStrategies::BCrypt config.redirect_url ="/" config.secure_cookie =false config.sign_in_guards =[] config.user_model =Userend

अपने डेटाबेस को माइग्रेट करने के लिए कमांड चलाएँ।

rake db:migrate

अपना PagesControllerखोलें और एक indexजोड़ें कार्रवाई।

#app/controllers/pages_controller.rbclass PagesController  

इसके बाद, index . के लिए एक दृश्य बनाएं आपके द्वारा अभी-अभी बनाई गई क्रिया।

नीचे कोड स्निपेट जोड़ें:

#app/views/pages/index.html.erb

Tutsplus Clearance

हमारे क्लियरेंस पेज पर आपका स्वागत है।

अपने मार्गों को इसमें संपादित करें:

#config/routes.rbRails.application.routes.draw इस पर रूट करें:"पेज#इंडेक्स"एंड

_navigation.html.erb . नाम का एक आंशिक बनाएं layouts . के अंदर निर्देशिका। इसका उपयोग आपके एप्लिकेशन पर नेविगेशन के साथ जो कुछ भी करना है, उसे संभालने के लिए किया जाएगा।

निम्नलिखित कोड पेस्ट करें और सहेजें।

#app/views/layouts/_navigation.html.erb
<% flash.each do |key, value| %>
<%=value%>
<% end %>

प्रतिबंधित पहुंच 

निकासी के साथ, आप अपने आवेदन में अपनी पसंद के विशिष्ट पृष्ठों तक सीमित पहुंच बनाने में सक्षम हो सकते हैं। आइए देखें कि यह कैसे किया जाता है।

new . के लिए एक दृश्य बनाएं app/views/pages . में कार्रवाई , फ़ाइल का नाम होना चाहिए new.html.erb . नीचे दिए गए कोड में पेस्ट करें।

#app/views/pages/new.html.erb

प्रतिबंधित पेज

यह पेज प्रमाणित उपयोगकर्ताओं के लिए प्रतिबंधित है, अगर आप इसे देख सकते हैं तो इसका मतलब है कि आप एक सुपरस्टार हैं!

अब आपको नीचे दी गई लाइन को config/routes.rb . में जोड़ना होगा ।

#config/routes.rb... संसाधन :पेज, केवल::नया...

अंत में, अपने PagesController . पर जाएं मेरे पास जो नीचे है उसे वैसा ही बनाओ।

#apps/controller/pages_controller.rbclass PagesController  

उपरोक्त कोड में, हम क्लीयरेंस हेल्पर का उपयोग कर रहे हैं, require_login , new . तक पहुंच प्रतिबंधित करने के लिए गतिविधि। यह देखने के लिए कि यह कैसे काम करता है, rails server . चलाकर अपने रेल सर्वर को प्रारंभ करें अपने टर्मिनल से। अपने ब्राउज़र को https://locahost:3000/pages/new . पर इंगित करें और यह आपको साइन इन पेज पर रीडायरेक्ट कर देगा।

क्लीयरेंस रूटिंग बाधाओं को भी प्रदान करता है जिनका उपयोग एक्सेस को नियंत्रित करने के लिए किया जा सकता है।

#config/routes.rbRails.application.routes.draw do बाधाएँ Clearance::Constraints::SignedOut.new करने के लिए रूट करें:'pages#index' अंत की कमी Clearance::Constraints::SignedIn.new इसके लिए रूट करें:"पेज#नया', जैसे::signed_in_root एंडएंड

उपरोक्त कोड में, प्रमाणित उपयोगकर्ताओं के लिए एक अलग मार्ग बनाया गया है।

क्लियरेंस डिफ़ॉल्ट ओवरराइड करना

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

क्लीयरेंस रूट्स को ओवरराइड (या जेनरेट) करने के लिए, इस कमांड को अपने टर्मिनल से चलाएं।

rails generate clearance:routes

आपकी रूट फ़ाइल अब इस तरह दिखनी चाहिए:

#config/routes.rbRails.application.routes.draw do संसाधन :पासवर्ड, नियंत्रक:"निकासी/पासवर्ड", केवल:[:बनाएँ, :नया] संसाधन:सत्र, नियंत्रक:"निकासी/सत्र", केवल :[:बनाएं] संसाधन:उपयोगकर्ता, नियंत्रक:"निकासी/उपयोगकर्ता", केवल:[:बनाएं] संसाधन करें:पासवर्ड, नियंत्रक:"निकासी/पासवर्ड", केवल:[:बनाएं,:संपादित करें,:अद्यतन] अंत प्राप्त करें "/ साइन_इन" => "निकासी/सत्र#नया", जैसे:"साइन_इन" हटाएं "/ साइन_आउट" => "निकासी/सत्र#नष्ट", जैसे:"साइन_आउट" प्राप्त करें "/ साइन_अप" => "निकासी/उपयोगकर्ता #नया", जैसे:"साइन_अप" रूट टू:"पेज#इंडेक्स" संसाधन :पेज, केवल::न्यूएंड

कमांड config.routes . भी सेट करेगा अपने config/initializers/clearance.rb . में गलत पर सेट करना फ़ाइल। इसका मतलब है कि अभी-अभी बनाई गई कस्टम फ़ाइल का उपयोग किया जाएगा।

संशोधन के लिए विचार उत्पन्न करने के लिए, दौड़ें:

rails generate clearance:views

उत्पन्न होने वाली कुछ फाइलों में शामिल हैं:

 app/views/passwords/create.html.erb app/views/passwords/edit.html.erb app/views/passwords/new.html.erb app/views/sessions/_form.html.erb app/views /sessions/new.html.erb app/views/users/_form.html.erb app/views/users/new.html.erb config/locales/clearance.en.yml

आपको अपने टर्मिनल में एक प्रॉम्प्ट दिखाई देगा जो आपके app/views/layouts/application.html.erb को अधिलेखित करने के लिए कहेगा। फ़ाइल। आप जो विकल्प चाहते हैं उसे चुनें।

लेआउट

डिफ़ॉल्ट रूप से, क्लीयरेंस आपके एप्लिकेशन के डिफ़ॉल्ट लेआउट का उपयोग करता है। यदि आप उस लेआउट को बदलना चाहते हैं जिसे क्लीयरेंस अपने विचारों को प्रस्तुत करते समय उपयोग करता है, तो बस एक प्रारंभकर्ता में लेआउट निर्दिष्ट करें।

Clearance::PasswordsController.layout "my_passwords_layout"Clearance::SessionsController.layout "my_sessions_layout"Clearance::UsersController.layout "my_admin_layout"

सहायक तरीके

क्लीयरेंस आपको सहायक तरीके प्रदान करता है जिनका उपयोग आपके controllers . में किया जा सकता है , views , और helpers . इन तरीकों में शामिल हैं signed_in? , signed_out? , और current_user . उदाहरण के लिए:

 <% अगर साइन_इन किया गया है? %> <%=current_user.email %> <%=button_to "साइन आउट", साइन_आउट_पथ, विधि::हटाएं%> <% अन्य%> <% =link_to "साइन इन", साइन_इन_पथ%> <% अंत%> /पूर्व> 

निष्कर्ष

जब प्रमाणीकरण की बात आती है तो क्लीयरेंस के पास आपको देने के लिए बहुत कुछ होता है, इसलिए इसे अपने अगले प्रोजेक्ट में आज़माना सुनिश्चित करें। आप GitHub पेज को चेक करके और जान सकते हैं।


  1. एडब्ल्यूएस लैम्ब्डा के लिए रेल की तैनाती

    सर्वर रहित कंप्यूटिंग एक क्लाउड प्रदाता को सर्वर के प्रबंधन और प्रावधान के काम को उतारने में मदद करती है और तेजी से अधिकांश प्रौद्योगिकी टीमों के लिए एक चीज बन रही है। AWS लैम्ब्डा एक प्रकार की सर्वर रहित तकनीक है जिसका उपयोग कई तकनीकी टीमों द्वारा किया जाता है। AWS लैम्ब्डा NodeJS, Java, Python और

  1. रेल सुरक्षा खतरे:प्रमाणीकरण

    इस श्रृंखला का एक भाग, कवर इंजेक्शन अटैक OWASP शीर्ष 10 वेब अनुप्रयोग सुरक्षा जोखिमों के बारे में हमारी श्रृंखला के दूसरे लेख में, हम टूटे हुए प्रमाणीकरण और डेटा जोखिम खतरों के ब्रह्मांड में गोता लगाएंगे। अधिक विशेष रूप से, हम इस बारे में बात करेंगे कि हैकर के लिए आपके द्वारा बनाए गए कोड को धोखा द

  1. रेल के साथ कोणीय का उपयोग करना 5

    आपने पहले कहानी सुनी है। आपके पास पहले से ही आपके विकेन्द्रीकृत और पूरी तरह से काम कर रहे बैक-एंड एपीआई और किसी भी सामान्य टूलसेट से बने फ्रंट-एंड पर चलने वाला एक एप्लिकेशन है। अब, आप कोणीय पर आगे बढ़ना चाहते हैं। या, शायद आप अपनी रेल परियोजनाओं के साथ एंगुलर को एकीकृत करने का एक तरीका ढूंढ रहे हैं