2012-12-22 19 views
12

Mam nową instalację Rails i próbuję skonfigurować uwierzytelnianie z Devise. O ile mogę powiedzieć, mam bardzo podstawową konfigurację, która powinna działać, ale gdy próbuję zalogować się przy pomocy domyślnego formularza logowania, otrzymuję nieautoryzowany błąd. Jestem pewien, że moje dane są prawidłowe, jak I stworzył dla sprawdzenia, ze w konsoli tak:Zawsze otrzymuję 401 Nieautoryzowane z nową instalacją Rails + Devise

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

Mój model użytkownika:

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 

Mój dziennik:

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 

Czy w jaki sposób mogę uzyskać więcej informacji o tym, co się nie udaje w Devise? Kiedy utworzę użytkownika w konsoli, czy szyfrowanie jest inne niż za pomocą formularzy?

Odpowiedz

24

Cóż, to małe ćwiczenie w frustracji okazało się dobrą lekcją w RTFM. Miałem założyć opracować z POTWIERDZALNE, a kiedy tworzę układów I zapomniał wstawić następujące linie:

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

... jak to wyraźnie stwierdza zrobić w podręczniku Rozpoczęcie pracy. Po ich wstawieniu otrzymałem komunikat o błędzie "Musisz potwierdzić swój adres e-mail przed zalogowaniem."

W konsoli mam ustawiony confirmed_at = Time.now dla użytkownika, i voilà, mogę się teraz zalogować.

+1

spróbuj '@ user.skip_confirmation!' Dla niektórych użytkowników nie pozwolisz mu na otrzymanie wiadomości e-mail z potwierdzeniem. –

+0

Dobra lekcja. Nauczyłem się tego również dzisiaj. –

0

w mojej sytuacji powoduje przez to

przed (nie powiedzie się z 401)

resources :users devise_for :users

po (sukces)

devise_for :users resources :users

więc spróbuj wykonać właściwą kolejność w routes.rb

Powiązane problemy