Ruby on Rails
Devise का उपयोग करके Api को प्रमाणित करें
खोज…
परिचय
राइज़ रेल के लिए प्रमाणीकरण समाधान है। आगे जाने से पहले मैं एपीआई पर त्वरित नोट जोड़ना चाहूंगा। इसलिए एपीआई सत्रों को संभाल नहीं पा रहा है (जो कि स्टेटलेस है) जिसका अर्थ है कि आपके अनुरोध के बाद प्रतिक्रिया प्रदान करना, और फिर आगे किसी भी ध्यान की आवश्यकता नहीं है, जिसका अर्थ है कि सिस्टम के काम करने के लिए कोई पिछली या भविष्य की स्थिति की आवश्यकता नहीं है इसलिए जब भी हमें सर्वर से अनुरोध करना होगा सभी एपीआई के साथ प्रमाणीकरण विवरण पास करें और यह बताएं कि प्रमाणीकरण विवरणों को संग्रहीत नहीं करना चाहिए।
शुरू करना
इसलिए पहले हम रेल परियोजना और सेटअप डिवाइस बनाएंगे
एक रेल आवेदन बनाएँ
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
जो प्रत्येक अनुरोध पर एक सत्र बनाने से रोकेगा इसलिए हम स्टेटलेस री करेंगे