用户身份验证错误无法正常工作

时间:2015-09-19 09:29:18

标签: ruby-on-rails

我有一个sessions_helper文件,用于查找用户以及是否找到用户登录到应用程序。但是,如果找不到用户,则应该给出错误。

module SessionsHelper

  # Log a user in after authenticating, store in session
  def log_in(user)
    if user.id.nil?
      format.html { redirect_to signin_path, notice: 'Invalid Email or password' }
      format.json { head :no_content }
    else
      session[:user_id] = user.id
    end
  end
end

我有会话/未经审查的观点。

<div class="col-md-4">
        <div class="panel panel-default">
            <div class="panel-heading">Log In!</div>
            <div class="panel-body">
                <%= form_for(:credentials, url: signin_path) do |f| %>
                    <div class="form-group">
                        <%= f.label :email%>
                        <%= f.email_field :email, class: 'form-control'%>
                    </div>
                        <div class="form-group">
                        <%= f.label :password%>
                        <%= f.password_field :password, class: 'form-control'%>
                    </div>
                    <%= submit_tag %>
                <% end %>
            </div>
        </div>
    </div>

此代码允许用户成功登录应用程序,但如果未找到用户,则不会在应用程序上显示错误。

2 个答案:

答案 0 :(得分:1)

您需要将此信息包含在您的视图中

  <% if flash[:notice] %>
    <div class="notice"><%= flash[:notice] %></div>
  <% end %>

此代码将显示您的错误消息。

阅读here

答案 1 :(得分:1)

您尚未在view中发布flash message

-

<强>闪存

Rails Flash是一种会话变量,用于存储动作中生成的数据。这意味着您可以在视图或布局中调用警报/通知。

有3种类型的闪光灯,虽然我认为你可以使用任意数量的闪光灯:

  • notice
  • alert
  • error

当您致电... notice: 'Invalid Email or password' }时,您告诉我们填充flash[:notice]对象。

如果要在视图中显示此内容,则需要调用它,如下所示:

<div class="col-md-4">
    <div class="panel panel-default">
        <!-- Error -->
        <%= flash[:notice] if flash[:notice] %>

        <!-- Login -->
        <div class="panel-heading">Log In!</div>
        <div class="panel-body">
            <%= form_for(:credentials, url: signin_path) do |f| %>
                <div class="form-group">
                    <%= f.label :email%>
                    <%= f.email_field :email, class: 'form-control'%>
                </div>
                    <div class="form-group">
                    <%= f.label :password%>
                    <%= f.password_field :password, class: 'form-control'%>
                </div>
                <%= submit_tag %>
            <% end %>
        </div>
    </div>
</div>