Ruby on Rails
रेल में उपयोगकर्ता प्रमाणीकरण
खोज…
परिचय
डेविस एक बहुत शक्तिशाली रत्न है, यह आपको स्थापित करने के बाद साइन अप, साइन इन और साइन आउट करने की अनुमति देता है। इसके अलावा उपयोगकर्ता अपने अनुप्रयोगों में प्रमाणीकरण और प्रतिबंध जोड़ सकते हैं। यदि उपयोगकर्ता उपयोग करना चाहते हैं, तो डेइस भी अपने स्वयं के विचारों के साथ आते हैं। उपयोगकर्ता अपनी आवश्यकता और आवश्यकता के अनुसार साइन अप और फॉर्म में साइन-इन को कस्टमाइज़ भी कर सकता है। यह ध्यान दिया जाना चाहिए कि डेविस अनुशंसा करता है कि यदि आप रेल में नए हैं तो आप अपना लॉगिन लागू करेंगे।
टिप्पणियों
rails generate devise:install के समय डेविस कॉन्फिगर करने के समय rails generate devise:install , वसीयत का पालन करने के लिए टर्मिनल पर निर्देशों का गुच्छा सूचीबद्ध करेगा।
यदि आपके पास पहले से ही एक USER मॉडल है, तो इस कमांड rails generate devise USER चलाने rails generate devise USER आपके मौजूदा USER मॉडल में आवश्यक कॉलम जोड़ देगा।
पहले इस हेल्पर मेथड का प्रयोग करें before_action :authenticate_user! अपने नियंत्रक के शीर्ष पर यह जांचने के लिए कि user लॉग-इन है या नहीं। यदि नहीं, तो वे साइन-इन पृष्ठ पर पुनर्निर्देशित हो जाएंगे।
Devise का उपयोग करके प्रमाणीकरण
रत्न को मणि में जोड़ें:
gem 'devise'
फिर bundle install कमांड चलाएं।
कमांड $ rails generate devise:install उपयोग करें, $ rails generate devise:install करें $ rails generate devise:install आवश्यक कॉन्फ़िगरेशन फ़ाइल बनाने के लिए $ rails generate devise:install करें।
प्रत्येक वातावरण में डेविस मेलर के लिए डिफ़ॉल्ट URL विकल्प सेट करें। विकास परिवेश में इस पंक्ति को जोड़ें:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
अपने config/environments/development.rb
उत्पादन में इसी तरह से config/environments/production.rb फ़ाइल को संपादित करें और जोड़ें
config.action_mailer.default_url_options = { host: 'your-site-url'}
फिर एक मॉडल का उपयोग करके बनाएं: $ rails generate devise USER कहां USER वह वर्ग नाम है जिसके लिए आप प्रमाणीकरण को लागू करना चाहते हैं।
अंत में, रन: rake db:migrate और आप सभी सेट हैं।
कस्टम व्यूज़
यदि आपको अपने विचारों को कॉन्फ़िगर करने की आवश्यकता है, तो आप rails generate devise:views उपयोग कर सकते हैं rails generate devise:views जनरेटर जो आपके आवेदन के सभी विचारों को कॉपी करेगा। फिर आप उन्हें इच्छानुसार संपादित कर सकते हैं।
यदि आपके आवेदन में एक से अधिक डेविस मॉडल हैं (उदाहरण के लिए उपयोगकर्ता और व्यवस्थापक), तो आप देखेंगे कि डेविस सभी मॉडलों के लिए समान विचारों का उपयोग करता है। विचारों को अनुकूलित करने के लिए डेविस एक आसान तरीका प्रदान करता है। config/initializers/devise.rb config.scoped_views = true config/initializers/devise.rb फ़ाइल के अंदर config.scoped_views = true सेट करें।
आप rails generate devise:views users दृश्यों को बनाने के लिए जनरेटर का भी उपयोग कर सकते हैं: rails generate devise:views users
यदि आप केवल कुछ ही दृश्य उत्पन्न करना चाहते हैं, जैसे कि रजिस्टर करने योग्य और पुष्टि करने वाले मॉड्यूल के लिए -v ध्वज का उपयोग करते हैं: rails generate devise:views -v registrations confirmations
डेविस कंट्रोलर फिल्टर एंड हेल्पर्स
डेविस का उपयोग करके उपयोगकर्ता प्रमाणीकरण के साथ एक नियंत्रक स्थापित करने के लिए, इस से पहले जोड़ें:
before_action :authenticate_user!
यदि उपयोगकर्ता साइन इन है, तो सत्यापित करने के लिए, निम्न सहायक का उपयोग करें:
user_signed_in?
वर्तमान हस्ताक्षरित उपयोगकर्ता के लिए, इस सहायक का उपयोग करें:
current_user
आप इस दायरे के लिए सत्र का उपयोग कर सकते हैं:
user_session
- ध्यान दें कि यदि आपके डेविस मॉडल को
UserबजायMemberकहा जाता है, तोuserकोmemberसाथ बदलें
Omniauth
सबसे पहले अपनी रणनीति का चयन करें और इसे अपने Gemfile जोड़ें। आप यहां रणनीतियों की एक सूची पा सकते हैं: https://github.com/intridea/omniauth/wiki/List-of-Statategies
gem 'omniauth-github', :github => 'intridea/omniauth-github'
gem 'omniauth-openid', :github => 'intridea/omniauth-openid'
आप इसे अपने रेल मिडलवेयर में इस तरह जोड़ सकते हैं:
Rails.application.config.middleware.use OmniAuth::Builder do
require 'openid/store/filesystem'
provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET']
provider :openid, :store => OpenID::Store::Filesystem.new('/tmp')
end
डिफ़ॉल्ट रूप से, ओमनीथ आपके मार्गों में /auth/:provider को जोड़ देगा और आप इन रास्तों का उपयोग करके शुरू कर सकते हैं।
डिफ़ॉल्ट रूप से, यदि कोई विफलता है, तो omniauth /auth/failure or /auth/failure को रीडायरेक्ट करेगा
has_secure_password
उपयोगकर्ता मॉडल बनाएँ
rails generate model User email:string password_digest:string
उपयोगकर्ता मॉडल में has_secure_password मॉड्यूल जोड़ें
class User < ActiveRecord::Base has_secure_password end
अब आप पासवर्ड के साथ एक नया उपयोगकर्ता बना सकते हैं
user = User.new email: '[email protected]', password: 'Password1', password_confirmation: 'Password1'
पासवर्ड को प्रमाणित विधि से सत्यापित करें
user.authenticate('somepassword')
has_secure_token
उपयोगकर्ता मॉडल बनाएँ
# Schema: User(token:string, auth_token:string)
class User < ActiveRecord::Base
has_secure_token
has_secure_token :auth_token
end
अब जब आप एक नया उपयोगकर्ता बनाते हैं तो एक टोकन और Andor_token स्वचालित रूप से उत्पन्न होता है
user = User.new
user.save
user.token # => "pX27zsMN2ViQKta1bGfLmVJE"
user.auth_token # => "77TMHrHJFvFDwodq8w7Ev2m7"
आप regenerate_token और regenerate_auth_token का उपयोग करके टोकन को अपडेट कर सकते हैं
user.regenerate_token # => true
user.regenerate_auth_token # => true