Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 用户登录身份验证在RubyonRails中不起作用_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 用户登录身份验证在RubyonRails中不起作用

Ruby on rails 用户登录身份验证在RubyonRails中不起作用,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在尝试通过登录页面将用户登录到我的rails站点。“我的用户”输入他们的电子邮件和密码以便登录,但当他们单击“提交”按钮时,页面会自动刷新-但它应该会将用户带到他们的仪表板(用户配置文件屏幕) 我似乎不知道为什么。虽然我从数据库中得到的信息如下: Started POST "/login" for 96.49.105.234 at 2016-01-19 16:50:41 +0000 Processing by SessionsController#create as HTML

我正在尝试通过登录页面将用户登录到我的rails站点。“我的用户”输入他们的电子邮件和密码以便登录,但当他们单击“提交”按钮时,页面会自动刷新-但它应该会将用户带到他们的仪表板(用户配置文件屏幕)

我似乎不知道为什么。虽然我从数据库中得到的信息如下:

   Started POST "/login" for 96.49.105.234 at 2016-01-19 16:50:41 +0000
    Processing by SessionsController#create as HTML
      Parameters: {"utf8"=>"✓", "authenticity_token"=>"zo/bLDBFtOAthi/vD8nU5Iqdn3TcsdB/NS8SJKW/l190YC7uXMLw6+EFWl6FPf3hDmVTTN2ozZ4t/8lanYZHhg==", "session"=>{"email"=>"myuser@live.ca", "password"=>"[FILTERED]"}, "commit"=>"Log in"}
      User Load (0.4ms)  SELECT  "users".* FROM "users" WHERE "users"."email" = ? LIMIT 1  [["email", "myuser@live.ca"]]
      Rendered sessions/new.html.erb within layouts/application (1.5ms)
    Completed 200 OK in 153ms (Views: 71.4ms | ActiveRecord: 0.4ms)
见下面的代码:

会话\u controller.rb

class SessionsController < ApplicationController


  def new
  end

  def create
   user = User.find_by(email: params[:session][:email] .downcase)

   if user && user.authenticate(params[:session][:password])

     log_in user
     redirect_to user

   else

     render 'new'

     end
  end

def destroy
end
end
module SessionsHelper

    def log_in(user)
        session[:user_id] = user.id
    end

    #Returns the current logged-in user

    def current_user
        @current_user ||= User.find_by(id: session[:user_id])
    end

end
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <%= form_for(:session, url: login_path) do |f| %>

        <%= f.label :email %>
        <%= f.email_field :email, class: 'form-control' %>

        <%= f.label :password %>
        <%= f.password_field :password, class: 'form-control' %>

        <%= f.submit "Log in", class: "btn btn-primary" %>
        <% end %>

        <p>New user? <%= link_to "Sign up now!", signup_path %> </p>
    </div>
</div>
class User < ActiveRecord::Base

    has_secure_password


  validates_length_of :password, :in => 6..20, :on => :create
  validates :password_confirmation, presence: true, if: -> { new_record? || changes["password"] }

end
class UsersController < ApplicationController

def create
  @user = User.new(user_params)
  if @user.save
    flash[:success] = "You signed up successfully"
    flash[:color] = "valid"
    redirect_to @user
  else
    flash[:notice] = "Form is invalid"
    flash[:color] = "invalid"
    render "new"
  end
end



private
def user_params
  params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation)
end


def show
  @user = User.find(params[:id])
end

def new
end

end
new.html.erb

class SessionsController < ApplicationController


  def new
  end

  def create
   user = User.find_by(email: params[:session][:email] .downcase)

   if user && user.authenticate(params[:session][:password])

     log_in user
     redirect_to user

   else

     render 'new'

     end
  end

def destroy
end
end
module SessionsHelper

    def log_in(user)
        session[:user_id] = user.id
    end

    #Returns the current logged-in user

    def current_user
        @current_user ||= User.find_by(id: session[:user_id])
    end

end
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <%= form_for(:session, url: login_path) do |f| %>

        <%= f.label :email %>
        <%= f.email_field :email, class: 'form-control' %>

        <%= f.label :password %>
        <%= f.password_field :password, class: 'form-control' %>

        <%= f.submit "Log in", class: "btn btn-primary" %>
        <% end %>

        <p>New user? <%= link_to "Sign up now!", signup_path %> </p>
    </div>
</div>
class User < ActiveRecord::Base

    has_secure_password


  validates_length_of :password, :in => 6..20, :on => :create
  validates :password_confirmation, presence: true, if: -> { new_record? || changes["password"] }

end
class UsersController < ApplicationController

def create
  @user = User.new(user_params)
  if @user.save
    flash[:success] = "You signed up successfully"
    flash[:color] = "valid"
    redirect_to @user
  else
    flash[:notice] = "Form is invalid"
    flash[:color] = "invalid"
    render "new"
  end
end



private
def user_params
  params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation)
end


def show
  @user = User.find(params[:id])
end

def new
end

end

新用户

user.rb

class SessionsController < ApplicationController


  def new
  end

  def create
   user = User.find_by(email: params[:session][:email] .downcase)

   if user && user.authenticate(params[:session][:password])

     log_in user
     redirect_to user

   else

     render 'new'

     end
  end

def destroy
end
end
module SessionsHelper

    def log_in(user)
        session[:user_id] = user.id
    end

    #Returns the current logged-in user

    def current_user
        @current_user ||= User.find_by(id: session[:user_id])
    end

end
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <%= form_for(:session, url: login_path) do |f| %>

        <%= f.label :email %>
        <%= f.email_field :email, class: 'form-control' %>

        <%= f.label :password %>
        <%= f.password_field :password, class: 'form-control' %>

        <%= f.submit "Log in", class: "btn btn-primary" %>
        <% end %>

        <p>New user? <%= link_to "Sign up now!", signup_path %> </p>
    </div>
</div>
class User < ActiveRecord::Base

    has_secure_password


  validates_length_of :password, :in => 6..20, :on => :create
  validates :password_confirmation, presence: true, if: -> { new_record? || changes["password"] }

end
class UsersController < ApplicationController

def create
  @user = User.new(user_params)
  if @user.save
    flash[:success] = "You signed up successfully"
    flash[:color] = "valid"
    redirect_to @user
  else
    flash[:notice] = "Form is invalid"
    flash[:color] = "invalid"
    render "new"
  end
end



private
def user_params
  params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation)
end


def show
  @user = User.find(params[:id])
end

def new
end

end
class用户6..20,:on=>:create
验证:密码确认,状态:true,如果:->{new_record?| | changes[“password”]}
结束
用户\u控制器.rb

class SessionsController < ApplicationController


  def new
  end

  def create
   user = User.find_by(email: params[:session][:email] .downcase)

   if user && user.authenticate(params[:session][:password])

     log_in user
     redirect_to user

   else

     render 'new'

     end
  end

def destroy
end
end
module SessionsHelper

    def log_in(user)
        session[:user_id] = user.id
    end

    #Returns the current logged-in user

    def current_user
        @current_user ||= User.find_by(id: session[:user_id])
    end

end
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <%= form_for(:session, url: login_path) do |f| %>

        <%= f.label :email %>
        <%= f.email_field :email, class: 'form-control' %>

        <%= f.label :password %>
        <%= f.password_field :password, class: 'form-control' %>

        <%= f.submit "Log in", class: "btn btn-primary" %>
        <% end %>

        <p>New user? <%= link_to "Sign up now!", signup_path %> </p>
    </div>
</div>
class User < ActiveRecord::Base

    has_secure_password


  validates_length_of :password, :in => 6..20, :on => :create
  validates :password_confirmation, presence: true, if: -> { new_record? || changes["password"] }

end
class UsersController < ApplicationController

def create
  @user = User.new(user_params)
  if @user.save
    flash[:success] = "You signed up successfully"
    flash[:color] = "valid"
    redirect_to @user
  else
    flash[:notice] = "Form is invalid"
    flash[:color] = "invalid"
    render "new"
  end
end



private
def user_params
  params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation)
end


def show
  @user = User.find(params[:id])
end

def new
end

end
class UsersController
user.authenticate方法的作用是什么?似乎条件块在
User.authenticate
条件下失败。我认为正确的身份验证是问题所在。你能在你的用户模型中通过吗?@Cyzanfar看到上面粘贴的User.rb:)你的实例方法
authenticate
在你的用户模型中声明在哪里?@Cyzanfar啊,也许这就是我缺少的。我觉得我的user.rb文件就是这么做的。刚刚在上面粘贴了我的用户_controller.rb。PS-为我的新问题道歉;我还在试着绕着栏杆转!