rails 5 authlogic神秘的user_session错误

时间:2016-05-02 16:55:41

标签: ruby-on-rails authlogic ruby-on-rails-5

我尝试使用Rails 5设置Authlogic(因此user_session_params.to_h),当我尝试创建新会话时,我收到以下错误消息,我不知道知道要做什么。任何建议将不胜感激。

置入@ user_session.errors.inspect

#<Authlogic::Session::Validation::Errors:0x0000000cb9b7a0 @base=#<UserSession: {:email=>"test@test.com", :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

2 个答案:

答案 0 :(得分:3)

在Rails 5 下似乎存在的Authlogic问题。

你可能已经从github issue 487看过this comment,但你可能只是第一步。步骤nr。 2处理Rails 5下损坏的Authlogic回调,并且有pull request #488的链接,其中开发了修复程序。目前,您唯一的选择似乎如下:

  • 您可以尝试this branch of Authlogic,其中涉嫌修复了回调问题,在拉请求488中为commented
  • 您当然可以等到事情稳定下来并且Authlogic获得对Rails5的官方支持。

答案 1 :(得分:0)

从Authlogic版本3.5.0开始修复此问题。目前3.5.0仍然没有作为稳定版本发布,但是在你的Gemfile中指定3.5应该可以解决问题(无论如何它都适用于我):

gem 'authlogic', '~> 3.5'