2012-12-22 13 views
12

मेरे पास रेल का एक नया इंस्टॉल है और मैं डेविस के साथ प्रमाणीकरण स्थापित करने की कोशिश कर रहा हूं। जहां तक ​​मैं कह सकता हूं कि मेरे पास एक बहुत ही बुनियादी सेट अप है जो काम करना चाहिए, लेकिन जब भी मैं डिफॉल्ट डिवाइज़ साइन इन फॉर्म में लॉग इन करने का प्रयास करता हूं तो मुझे अनधिकृत त्रुटि मिलती है।रेल के नए इंस्टॉलेशन के साथ हमेशा 401 अनधिकृत हो रहा है + डेविस

User.new({:email=>'[email protected]', :priv_level => 'admin', :password=>'mypassword', :password_confirmation=>'mypassword'}).save 

मेरे उपयोगकर्ता मॉडल:

class User < ActiveRecord::Base 

    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable, :confirmable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me, :priv_level, :unconfirmed_email 
    # attr_accessible :title, :body 

    has_one :supplier 

end 

मेरे लॉग:

Started POST "/admin/user/sign_in" for 127.0.0.1 at 2012-12-22 13:10:56 -0500 
Processing by Admin::SessionsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"wYLsalxN9rTv8P8bvYuT0wZcvlFbu6b1SvoCyKtTCII=", "admin_user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1 
(0.1ms) begin transaction 
(0.0ms) commit transaction 
Completed 401 Unauthorized in 69ms 

है मुझे यकीन है कि के रूप में मैं बहुत की तरह कंसोल में साथ परीक्षण करने के लिए एक उपयोगकर्ता द्वारा निर्मित मेरी क्रेडेंशियल सही हैं हूँ डेविस से असफल होने के बारे में मुझे और जानकारी मिल सकती है? जब मैं कंसोल में उपयोगकर्ता बनाता हूं तो एन्क्रिप्शन फॉर्म के माध्यम से अलग होता है?

उत्तर

24

वैसे ही निराशा में यह छोटा अभ्यास आरटीएफएम में एक अच्छा सबक साबित हुआ। मैं confirmable साथ वसीयत की स्थापना की थी, और जब मैं अपने लेआउट बनाया मैं निम्नलिखित लाइनों को सम्मिलित करने के उपेक्षित:

<p class="notice"><%= notice %></p> 
<p class="alert"><%= alert %></p> 

... के रूप में यह स्पष्ट रूप से आरंभ करने की मार्गदर्शिका में क्या करना कहा गया है। जब मैंने इन्हें डाला तो मुझे त्रुटि संदेश मिला "लॉग इन करने से पहले आपको अपने ईमेल पते की पुष्टि करने की आवश्यकता है।"

सांत्वना मैं उपयोगकर्ता के लिए निर्धारित confirmed_at = Time.now में, और देखा, मैं अभी लॉग इन कर सकते हैं।

+1

कुछ उपयोगकर्ता के लिए 'user.skip_confirmation! 'आज़माएं, आप उसे पुष्टिकरण ईमेल प्राप्त करने नहीं देंगे। –

+0

अच्छा सबक। मैंने आज भी इसे सीखा। –

0

मेरी स्थिति में यह इस

द्वारा का कारण बनता है से पहले (401 के साथ विफल रहता है)

resources :users devise_for :users

के बाद (सफलता)

devise_for :users resources :users

तो, रूट्स में सही ऑर्डर करने का प्रयास करें। आरबी