कई रेल 2.3 ऐप्स आराम से प्रमाणीकरण का उपयोग कर रहे हैं लेकिन उस प्लगइन में रेल के साथ कुछ समस्याएं हैं। रेल 3 में अपग्रेड करने में मैं डेविस का उपयोग कर रहा हूं। क्या आराम से प्रमाणीकरण से डेविस तक आसानी से संक्रमण करने का कोई तरीका है? क्या किसी ने माइग्रेशन किया है जो दिखाता है कि उपयोगकर्ता मॉडल को कैसे अपडेट किया जाए?आराम से प्रमाणीकरण से लेकर
उत्तर
मैंने अपने एप्लिकेशन को पहले से ही विश्वसनीय प्रमाणीकरण से अद्यतन करने के लिए अपडेट किया है। यहां मेरा माइग्रेशन है:
class AlterUsersForDevise < ActiveRecord::Migration
def self.up
remove_column :users, :name
change_column :users, :email, :string, :default => "", :null => false, :limit => 128
rename_column :users, :crypted_password, :encrypted_password
change_column :users, :encrypted_password, :string, :limit => 128, :default => "", :null => false
rename_column :users, :salt, :password_salt
change_column :users, :password_salt, :string, :default => "", :null => false, :limit => 255
add_column :users, :reset_password_token, :string
change_column :users, :remember_token, :string, :limit => 255
rename_column :users, :remember_token_expires_at, :remember_created_at
add_column :users, :sign_in_count, :integer, :default => 0
add_column :users, :current_sign_in_at, :datetime
add_column :users, :last_sign_in_at, :datetime
add_column :users, :current_sign_in_ip, :string
add_column :users, :last_sign_in_ip, :string
rename_column :users, :activation_code, :confirmation_token
change_column :users, :confirmation_token, :string, :limit => 255
rename_column :users, :activated_at, :confirmed_at
add_column :users, :confirmation_sent_at, :datetime
end
def self.down
add_column :users, :name, :string, :limit => 100, :default => ""
rename_column :users, :encrypted_password, :crypted_password
change_column :users, :crypted_password, :string, :limit => 40
rename_column :users, :password_salt, :salt
change_column :users, :salt, :string, :limit => 40
remove_column :users, :reset_password_token
change_column :users, :remember_token, :string, :limit => 40
rename_column :users, :remember_created_at, :remember_token_expires_at
remove_column :users, :sign_in_count
remove_column :users, :current_sign_in_at
remove_column :users, :last_sign_in_at
remove_column :users, :current_sign_in_ip
remove_column :users, :last_sign_in_ip
rename_column :users, :confirmation_token, :activation_code
change_column :users, :confirmation_token, :string, :limit => 40
rename_column :users, :confirmed_at, :activated_at
remove_column :users, :confirmation_sent_at
end
end
मेरा आवेदन अब तक लाइव नहीं है। इसलिए मैं डिवाइसेज से पासवर्ड एन्क्रिप्शन को बदले में एक अधिकृत प्राधिकरण से उपयोग करता हूं। यदि आप पहले से ही जिंदा हैं, और आपके पास सक्रिय उपयोगकर्ता हैं तो आपको विश्वसनीय प्रमाणीकरण से SHA1 का उपयोग करने के लिए Devise को कॉन्फ़िगर करना चाहिए और पासवर्ड को डिक्रिप्ट करना चाहिए। अन्यथा आपके सभी उपयोगकर्ताओं को एक नया पासवर्ड अनुरोध करना होगा।
आप इसे डिवाइज प्रारंभकर्ता में कॉन्फ़िगर कर सकते हैं।
आशा है कि मदद करता है ...
मैं पासवर्ड एन्क्रिप्शन के साथ समस्या हो गई थी (लेकिन मैं इस सवाल का जवाब मिल गया, मेरे दूसरे प्रतिक्रिया देखें)। पुराना ऐप आराम से प्रमाणीकरण का पुराना संस्करण इस्तेमाल करता था। यह बहुत की तरह पासवर्ड एन्क्रिप्शन से निपटने गया था:
# before filter
def encrypt_password
return if password.blank?
self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record?
self.crypted_password = encrypt(password)
end
# Encrypts some data with the salt.
def self.encrypt(password, salt)
Digest::SHA1.hexdigest("--#{salt}--#{password}--")
end
# Encrypts the password with the user salt
def encrypt(password)
self.class.encrypt(password, salt)
end
अगर मैं विधि तैयार की config.encryptor
:restful_authentication_sha1
को यह काम नहीं करता। इसलिए जैसे devise.rb
में यह चयन
# /config/initializers/devise_encryptor.rb
require "digest/sha1"
module Devise
module Encryptors
class OldRestfulAuthentication < Base
def self.digest(password, stretches, salt, pepper)
Digest::SHA1.hexdigest("--#{salt}--#{password}--")
end
end
end
end
और फिर:
तुम इतनी तरह एक कस्टम encryptor बनाने की जरूरत है:
मेरे समाधान को दूसरे उत्तर में देखें। –
यहाँ कैसे पासवर्ड समस्या को दूर करने के लिए
config.encryptor = :old_restful_authentication
कि यह करना चाहिए!
यहाँ तैयार करने के लिए संपादित करें
https://github.com/plataformatec/devise/wiki/How-To:-Migrate-from-restful_authentication-to-Devise
कारण restful_authentication से प्रवास पर एक अच्छा गाइड है: पूर्व लिंक एक रिक्त पृष्ठ के लिए लोगों को ले लिया।
ने उस लिंक को सही किया जो पहले एक रिक्त पृष्ठ का नेतृत्व करता था जो कहता है, "नया पृष्ठ बनाएं।" – Jay
मेरे मामले यह काम करता है में (पुराने मणि restful_authenticationमें authentication.rb और by_password.rb analized):
config/initializers/devise.rb इस जोड़ें:
config.encryptor = :restful_authentication
config.stretches = 10 #REST_AUTH_DIGEST_STRETCHES frome Restful Authentication file config/initializers/site_key.rb
config.pepper = 'mashauronilavrechkumyachik' #REST_AUTH_SITE_KEY frome Restful Authentication file config/initializers/site_key.rb
ऐप/मॉडल/user.rb जोड़ें: एन्क्रिप्टेबल
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:encryptable, :omniauthable, :authentication_keys => [:login]
config/initializers/devise_encryptor.rb इस इस के साथ बनाने के लिए:
# -*- encoding : utf-8 -*-
require "digest/sha1"
module Devise
module Encryptable
module Encryptors
class RestfulAuthentication < Base
def self.digest(password, stretches, salt, pepper)
digest = pepper
stretches.times do
digest = secure_digest(digest, salt, password, pepper)
end
digest
end
def self.secure_digest(*args)
Digest::SHA1.hexdigest(args.flatten.join('--'))
end
def self.encrypt_password
return if password.blank?
self.password_salt = make_token if new_record?
self.encrypted_password = encrypt(password)
end
def self.make_token
secure_digest(Time.now, (1..10).map{ rand.to_s })
end
def self.encrypt(password)
self.password_digest(password, stretches, salt, pepper)
end
end
end
end
end
- 1. आराम से एपीआई प्रमाणीकरण सिफारिश?
- 2. आराम प्रमाणीकरण: एकाधिक कंप्यूटर से लॉग इन की अनुमति दें?
- 3. आराम से वेब सेवाएं
- 4. आराम से आदेश
- 5. टाइप ऑब्जेक्ट से लेकर लंबे समय तक
- 6. Django: InlineAdmin और ManyToManyField साथ 'से लेकर'
- 7. जावा से आराम से सेवा कॉल करना
- 8. आराम से मार्ग और Django
- 9. वेब क्लाइंट आराम से हटाएं
- 10. आराम से रेल संपादित करें
- 11. आराम से रूटिंग क्या है?
- 12. क्या यह एपीआई आराम से है?
- 13. जर्सी आराम से सेवा संचार (असंगत क्लासChangeError)
- 14. रेल आराम से रूटिंग और सबडोमेन
- 15. आराम से एपीआई कोडिनेटर - जावा समस्या
- 16. क्या सही विकल्प आराम से है?
- 17. आईआईएस 7.5 आराम से डब्लूसीएफ 4.0
- 18. आराम से बनाम अन्य वेब सेवाएं
- 19. आराम से एपीआई - बड़ी मात्रा में डेटा
- 20. VBA Unfilter लेकर
- 21. गतिविधि से लेकर टुकड़े तक पोर्टिंग के साथ अटक
- 22. गतिविधि से लेकर खंड तक डेटा कैसे पास करें
- 23. आराम से वेब सेवाओं में उपयोगकर्ता नाम या पासवर्ड प्रोग्रामेटिक रूप से कैसे प्राप्त करें (मूल प्रमाणीकरण)
- 24. JAX-रुपये के साथ आराम प्रमाणीकरण कैसे करना है
- 25. क्या .NET के लिए कोई आराम है? आराम से जीवित है? क्या RelaxNG व्यवहार्य है?
- 26. Y अक्ष XYChart में लेकर
- 27. आराम एपीआई
- 28. जर्सी आराम एपीआई
- 29. OpenID प्रमाणीकरण बेतरतीब ढंग से
- 30. कस्टम प्रमाणीकरण से ओपन आईडी
धन्यवाद, यह काम करता है।मुझे एक अतिरिक्त समस्या थी जिसे मैंने नीचे दिए गए 2 उत्तरों में संबोधित किया था। –