मुझे लॉगिन प्रक्रिया के दौरान डेविस सत्र नियंत्रक को ओवरराइड करने की आवश्यकता है (रेल 3.0.9, रूबी 1.9.2, डेविस 1.3.4), मैंने इसे बिना किसी प्रभाव के करने की कोशिश की
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
resource = build_resource
clean_up_passwords(resource)
respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
end
end
विचार?
संपादित करें जैसा कि उत्तर में बताया गया है, मुझे मार्ग बदलने की भी आवश्यकता है। इसके अलावा, मुझे विचारों की प्रतिलिपि बनाने की भी आवश्यकता है। इसे यहां बेहतर तरीके से समझाया गया है http://presentations.royvandewater.com/authentication-with-devise.html#8
मेरी कस्टम रणनीति:
devise.rb
config.warden do |manager|
manager.strategies.add(:custom_strategy) do
def authenticate!
... authenticate against 3rd party API...
if res.body =~ /success/
u = User.find_or_initialize_by_email(params[:user][:email])
if u.new_record?
u.save
end
success!(u)
end
end
end
8
Johnny Klassy
9 नवम्बर 2011, 23:18
1 उत्तर
सबसे बढ़िया उत्तर
क्या आपने अपने नए नियंत्रक का उपयोग करने के लिए अपना मार्ग बदल दिया है?
/config/routes.rb
devise_for :users, :controllers => {:sessions => "sessions"}
13
Kyle d'Oliveira
9 नवम्बर 2011, 23:24
संबंधित सवाल
नए सवाल
ruby-on-rails
रूबी ऑन रेल्स रूबी में लिखा गया एक ओपन सोर्स फुल-स्टैक वेब एप्लिकेशन फ्रेमवर्क है। यह लोकप्रिय एमवीसी फ्रेमवर्क मॉडल का अनुसरण करता है और इसे "कॉन्फिगरेशन ओवर कॉन्फिगरेशन" अप्रोच डेवलपमेंट के दृष्टिकोण के लिए जाना जाता है।
devise_for :users
मार्ग रखता हूं? मैं अन्य कार्यों को ओवरराइड नहीं करना चाहता।devise_for
होना चाहिए, और आपके द्वारा विचारों की प्रतिलिपि बनाने के बाद इसे उन कार्यों के साथ भी काम करना चाहिए जिन्हें आपने ओवरराइड नहीं किया था। जहाँ तक आपके अन्य मुद्दे का सवाल है, मैं पूरी तरह से अनुसरण नहीं कर रहा हूँ। क्या आपके मॉडल में:database_authenticatable
विकल्प सेट है। (यानी वसीयत :database_authenticatable):database_authenticable
हमेशाUser
के लिए रहा है। मेरे पास इसके अतिरिक्त एक कस्टम रणनीति भी है, विवरण के लिए संपादित प्रश्न देखें।:database_authenticable
तक नहीं रह जाती है