2016-05-02 3 views
3

Я пытаюсь настроить Authlogic с Rails 5 (отсюда user_session_params.to_h), и когда я пытаюсь создать новый сеанс, я получаю следующее сообщение об ошибке, с которым я не знаю, что делать. Любые предложения будут высоко оценены.rails 5 authlogic cryptic user_session error

путы @ 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."}]}>

Вот код:

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 

Посмотреть

<%= 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 %> 

Пользователь

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

Вам нужно позвонить '@user_session. valid? 'перед вашими« puts », чтобы« ошибки »на самом деле печатали что-либо, если проверка не прошла. Пожалуйста, обновите вопрос. – BoraMa

+0

Добавил это. Теперь кажется, что он не распознает данные аутентификации, фактически используя правильные данные аутентификации. –

ответ

2

Там, как представляется, вопрос Authlogic под Rails 5.

Возможно, вы уже видели this comment из github issue 487, но вы, вероятно, следовали только на первом шаге. Шаг nr. 2 касается сломанных обратных вызовов Authlogic под Rails 5 и есть ссылка на pull request #488, где исправлено исправление. В настоящее время только ваши варианты кажутся следующим:

  • Вы можете попробовать this branch of Authlogic, что якобы имеют проблемы обратных вызовов фиксированные, а commented в запросе тягового 488.
  • Вы, конечно, можете подождать, пока все не успокоятся и Authlogic получает официальную поддержку Rails5.
+0

Yup, пока я решил написать свою собственную простую аутентификацию вокруг 'has_secure_password', и я поменяю ее позже. –

0

Похоже, эта проблема была исправлена, начиная с версии Authlogic 3.5.0. В настоящее время 3.5.0 до сих пор не была выпущена в качестве стабильной версии, но с указанием 3.5 в вашем Gemfile должны исправить вещи (он сделал для меня, во всяком случае):

gem 'authlogic', '~> 3.5'