2016-05-02 14 views
3

Ich versuche, Authlogic mit Rails 5 (daher die user_session_params.to_h) einzurichten, und wenn ich versuche, eine neue Sitzung zu erstellen, bekomme ich die folgende Fehlermeldung, mit der ich nicht weiß was machen. Irgendwelche Vorschläge werden sehr geschätzt.Rails 5 authlogic kryptische user_session Fehler

puts @ user_session.errors.inspect

#<Authlogic::Session::Validation::Errors:0x0000000cb9b7a0 @base=#<UserSession: {:email=>"[email protected]", :password=>"<protected>"}>, @messages={:base=>["You did not provide any details for authentication."]}, @details={:base=>[{:error=>"You did not provide any details for authentication."}]}>

Hier ist der Code:

UserSessionsController

class UserSessionsController < ApplicationController 
    def new 
    @user_session = UserSession.new 
    end 

    def create 
    @user_session = UserSession.new(user_session_params.to_h) 
    puts @user_session.errors.inspect 

    if @user_session.save 
     flash[:notice] = "Login successful, thank you!" 
     redirect_to users_path 
    else 
     flash[:notice] = "Something went wrong, sorry." 
    end 
    end 

    def destroy 
    current_user_session.destroy 
    redirect_to new_user_sessions_path 
    end 

    private 

    def user_session_params 
    params.require(:user_session).permit(:email, :password, :remember_me) 
    end 
end 

Usersession

class UserSession < Authlogic::Session::Base 
end 

Ansicht

<%= form_for @user_session, url: user_sessions_path, method: :post, html: {class: 'form-horizontal', role: 'form'} do |f| %> 
    <div class='form-group'> 
     <%= f.email_field :email, class: 'form-control', placeholder: 'Login' %> 
    </div> 
    <div class='form-group'> 
     <%= f.password_field :password, class: 'form-control', placeholder: 'Password' %> 
    </div> 
    <%= f.submit 'Login', class: 'btn btn-primary' %> 
<% end %> 

Benutzer

class User < ApplicationRecord 
    acts_as_authentic do |c| 
     c.login_field = 'email' 
    end 
end 
+1

Sie müssen '@user_session nennen. valide? 'vor deinem' puts', so dass 'errors' tatsächlich etwas ausdruckt, wenn die Validierung fehlschlägt. Bitte aktualisieren Sie die Frage. – BoraMa

+0

Hinzugefügt, dass. Nun scheint es, dass es die Authentifizierungsdetails nicht erkennt, während es tatsächlich die korrekten Authentifizierungsdetails verwendet. –

Antwort

2

Es ein Ausgabe von Authlogic unter Rails 5 zu sein scheint.

Sie haben wahrscheinlich bereits this comment von Github Ausgabe 487 gesehen, aber Sie haben wahrscheinlich nur den ersten Schritt gefolgt. Der Schritt nr. 2 behandelt defekte Authlogic Callbacks unter Rails 5 und es gibt einen Link zu pull request #488, wo ein Fix entwickelt wird. Derzeit scheinen Ihre einzigen Optionen, die folgenden zu sein:

  • Sie können this branch of Authlogic versuchen, die angeblich die Rückrufe Problem hat festgelegt, wie commented in dem Pull-Anforderung 488.
  • Sie können natürlich warten, bis die Dinge sich beruhigen und Authlogic erhält eine offizielle Unterstützung für Rails5.
+0

Yup, vorläufig entschied ich mich, meine eigene einfache Authentifizierung um 'has_secure_password' zu schreiben, und ich werde es später ändern. –

0

Es scheint, als ob dieses Problem mit Authlogic Version 3.5.0 behoben wurde. Derzeit 3.5.0 hat noch nicht als stabile Version veröffentlicht, aber 3,5 in Ihrem Gemfile Angabe sollte die Dinge reparieren (es für mich getan hat, sowieso):

gem 'authlogic', '~> 3.5'

Verwandte Themen