खोज…


परिचय

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

शुरू करना

इसलिए पहले हम रेल परियोजना और सेटअप डिवाइस बनाएंगे

एक रेल आवेदन बनाएँ

rails new devise_example

अब मणि सूची में वसीयत जोड़ें

आप रेल परियोजना के मूल में 'जेमफाइल' नामक एक फाइल पा सकते हैं

फिर bundle install चलाएं

अगला, आपको जनरेटर चलाने की आवश्यकता है:

rails generate devise:install

अब कंसोल पर आप कुछ निर्देशों का पालन कर सकते हैं।

डेविस मॉडल तैयार करें

rails generate devise MODEL

फिर rake db:migrate चलाएं rake db:migrate

अधिक जानकारी के लिए यहां जाएं: Devise Gem


प्रमाणीकरण टोकन

प्रमाणीकरण टोकन का उपयोग एक अद्वितीय टोकन के साथ एक उपयोगकर्ता को प्रमाणित करने के लिए किया जाता है, इसलिए इससे पहले कि हम तर्क के साथ आगे बढ़ें, हमें एक auth_token मॉडल में auth_token फ़ील्ड को जोड़ने की आवश्यकता है

इसलिये,

rails g migration add_authentication_token_to_users

class AddAuthenticationTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :auth_token, :string, default: ""
    add_index :users, :auth_token, unique: true
  end
end

फिर rake db:migrate चलाएं rake db:migrate

अब हम auth_token प्रमाणीकरण का उपयोग करने के लिए auth_token

app/controllers/application_controllers.rb

सबसे पहले यह लाइन

respond_to :html, :json 

यह html और json दोनों के साथ अनुप्रयोग प्रतिक्रिया देने में मदद करेगा

फिर

protect_from_forgery with: :null

यह बदल जाएगा :null क्योंकि हम सत्र के साथ काम नहीं कर रहे हैं।

अब हम application_controller में प्रमाणीकरण विधि जोड़ देंगे

इसलिए, डिफ़ॉल्ट रूप से, डेविस ईमेल का उपयोग अद्वितीय क्षेत्र के रूप में करता है, हम कस्टम फ़ील्ड का भी उपयोग कर सकते हैं, इस स्थिति के लिए हम user_email और dif_token का उपयोग करके प्रमाणीकरण करेंगे।

  before_filter do
    user_email = params[:user_email].presence
    user       = user_email && User.find_by_email(user_email)

    if user && Devise.secure_compare(user.authentication_token, params[:auth_token])
      sign_in user, store: false
    end
  end

नोट: उपरोक्त कोड पूरी तरह से आपके तर्क पर आधारित है, मैं सिर्फ काम करने के उदाहरण को समझाने की कोशिश कर रहा हूं

उपरोक्त कोड में लाइन 6 पर आप देख सकते हैं कि मेरे पास store: false जो प्रत्येक अनुरोध पर एक सत्र बनाने से रोकेगा इसलिए हम स्टेटलेस री करेंगे



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow