2011-07-20 19 views
5

मेरा ऐप अतिथि उपयोगकर्ता खाता स्वतः बनाता है। समस्या यह है कि अतिथि उपयोगकर्ता वास्तविक खाते में साइन-इन करना चाहता है।डब्ल्यू डेविस, किसी अन्य उपयोगकर्ता के रूप में साइन इन करने के लिए साइनइन उपयोगकर्ता को कैसे अनुमति दें

इसलिए मैं उपयोगकर्ताओं को साइन इन करना चाहता हूं जो पहले से ही साइन इन हैं? देवता के अनुसार।

मैं प्रपत्र प्रस्तुत करना सकता है, अगर मैं साइन इन सबमिट करने पर किक किसी रीडायरेक्ट के चिंतन:

Started POST "https://stackoverflow.com/users/sign_in" for 127.0.0.1 at 2011-07-19 18:21:45 -0700 
    Processing by Devise::SessionsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"RE/xxx=", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"1"}, "commit"=>"Sign In"} 
    User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 102 LIMIT 1 
Redirected to http://localhost:3000/ 
Completed 302 Found in 266ms 

अद्यतन

मैंने कोशिश की:

class SessionsController < Devise::SessionsController 

    def create 
    Rails.logger.info 'XXXXX 2' 
    super 
    Rails.logger.info 'XXXXX 4' 
    end 

end 

लेकिन लगता है कि यह विधि उस विधि को हिट करने से पहले अनुरोध को लात मार रही है और लॉगर लॉग फ़ाइल में नहीं हैं

कोई विचार है कि मैं साइन-इन उपयोगकर्ता को साइन इन करने की अनुमति कैसे दे सकता हूं?

+0

आप साइन इन पेज कैसे प्रस्तुत करने में सक्षम थे? मेरा कहना है "आप पहले ही साइन इन हैं।" जब आप सोचते हैं कि उपयोगकर्ता/sign_in – lulalala

+0

तक पहुंचने का प्रयास करते हैं, तो आपको लगता है कि मेरा उत्तर सही है तो कृपया इसे सही के रूप में चिह्नित करें! –

उत्तर

0

आप 2 क्रियाएं कर सकते हैं। पहले प्रस्थान करें और दूसरा एक है कि

+0

ठीक है लेकिन मुझे डीफ बनाने के लिए उपयोग नहीं मिल सकता है। इसे – AnApprentice

+0

कहा नहीं जा रहा है क्या आपको समस्या का समाधान करने का मौका मिला है? – Anatoly

6

वसीयत किसी अन्य उपयोगकर्ता का उपयोग करने जा sign_in विधि का उपयोग कर के लिए समर्थन हासिल है किसी अन्य उपयोगकर्ता द्वारा एक नया seesion आरंभ करने के लिए पुन: निर्देशित करता है। https://github.com/plataformatec/devise/wiki/How-To:-Sign-in-as-another-user-if-you-are-an-admin। आप स्वचालित रूप से एक खाता बनाने यदि https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user

3

ठीक है, इसका मतलब यह है कि आपके current_{resource} एक उपयोगकर्ता लौटने वाला है: यह भी अतिथि उपयोगकर्ता की अवधारणा है? यदि ऐसा है तो यह सामान्य है कि आपको साइन_इन और साइन_अप मार्गों से रीडायरेक्ट करता है (यदि आप स्रोत कोड देखते हैं तो prepend_before_filter :require_no_authentication है)।

रीडायरेक्ट समझाने के लिए ... अब आपकी समस्या का समाधान करने के लिए है कि नियंत्रक का विस्तार करने और केवल गैर अतिथि उपयोगकर्ताओं के लिए प्रमाणीकरण की आवश्यकता के साथ एक से पहले फिल्टर बनाने के लिए है। यह करने के लिए

लें ध्यान:

https://github.com/plataformatec/devise/blob/master/app/controllers/devise_controller.rb

में require_no_authentication की परिभाषा है, जो एक छोटा सा है, तो अपने उपयोगकर्ता प्रमाणीकृत है की पुष्टि करने की तुलना में अधिक करता है।

पी.एस.: तो बस guest_users

उदाहरण के लिए के लिए फिल्टर से पहले एक और जोड़ने मिला जहां भी आप पढ़ते हैं {संसाधन} आपके मॉडल वर्ग का नाम है। यदि उपयोगकर्ता तब उपयोगकर्ता है, तो प्रोफ़ाइल प्रोफ़ाइल, डाउनकेसिंग पर ध्यान दें।

class RegistrationsController < Devise::RegistrationsController 
    before_filter :require_no_authentication, :unless => :guest_user?, :only => [:new,:create, :cancel] 
    before_filter :require_no_authentication_for_guests, :if => :guest_user?, :only => [:new,:create, :cancel] 

    private 

    def guest_user? 
    current_{resource}.is_guest? 
    end 

    def require_no_authentication_for_guests 
    assert_is_devise_resource! 
    end 
end 

अपने मॉडल पर: अपने पंजीकरण नियंत्रक उदाहरण की तरह कहा जाता है और यदि संसाधन उपयोगकर्ता

है अगर

:

Class {resource} 
    def is_guest? 
    # here you put the code that distinguishes a guest user which should return true if its one> 
    end 
end 

भी मार्गों फ़ाइल को बदलने की जरूरत

devise_for :users, :controllers => {:sessions => "sessions", 
            :registrations => "registrations"} 

फिर आप अपने सत्र नियंत्रक पर ऐसा ही करते हैं। इसके द्वारा मेरा मतलब कस्टम सत्र नियंत्रक पर फिल्टर से पहले लागू करना है।

ध्यान दें जहां चाहते से पहले फिल्टर लागू करते हैं और इससे पहले कि अपनी आवश्यकताओं को जांच करते हैं।

क्या इससे मदद मिली?

+0

धन्यवाद लेकिन ऐसा लगता है कि अनुरोध के दौरान कस्टम रजिस्ट्रेशन नियंत्रक का कभी भी उपयोग नहीं किया जाता है। – lulalala

+0

और आप इस निष्कर्ष तक कैसे पहुंचे? क्या आपने डीबगर का उपयोग किया था? लेकिन मुझे खेद है कि मैं भूल गया कि आपको कस्टम नियंत्रक का उपयोग करने के लिए अपने मार्गों को कॉन्फ़िगर करना होगा। मैं –

+0

उत्तर को सही कर दूंगा, यह भी बताएं कि आपने इसका परीक्षण करने के लिए कौन से कदम उठाए हैं और यदि ऐसा लगता है कि डीबगर का उपयोग करना क्या लगता है! –

संबंधित मुद्दे

 संबंधित मुद्दे