Flash 迷人的闪光信息

Flash 迷人的闪光信息,flash,controller,mojolicious,Flash,Controller,Mojolicious,我正在构建一个基于以下内容的身份验证系统: 我遇到的问题是,如果用户输入了错误的用户名或密码,服务器将返回flash消息,就好像他们试图在未登录的情况下访问页面一样。它应该显示无效的凭据消息。如果我再次输入错误的凭据,则会收到无效凭据消息 以下是相关代码: sub main { my $self = shift; if ( $self->is_user_authenticated ) { $self->redirect_to('/main/cp'); } else

我正在构建一个基于以下内容的身份验证系统:

我遇到的问题是,如果用户输入了错误的用户名或密码,服务器将返回flash消息,就好像他们试图在未登录的情况下访问页面一样。它应该显示无效的凭据消息。如果我再次输入错误的凭据,则会收到无效凭据消息

以下是相关代码:

sub main {
  my $self = shift;
 if ( $self->is_user_authenticated ) {
    $self->redirect_to('/main/cp');
  } else {
    $self->flash( message => 'You must log in to view this page' );
    $self->render('login');
  }
}

sub login {
  my $self = shift;
    my $user = $self->param('name') || q{};
    my $pass = $self->param('pass') || q{};
    if ( $self->authenticate( $user, $pass ) ) {
      $self->redirect_to('/main/cp');
    } else {
      $self->flash( message => 'Invalid credentials!' );
      $self->render('login');
      return;
    }
}
模板:

% layout 'default';
% title 'Login';
<h1>Log In</h1>
<% if (my $message = flash 'message' ) { %>
<b><%= $message %></b><br>
<% } %>
<%= form_for login => (method => 'post') => begin %>
Name: <%= text_field 'name' %>
<br>
Password: <%= password_field 'pass' %>
<br>
<%= submit_button 'Login' %>
<% end %>
% layout 'default';
% title 'Login';
<h1>Log In</h1>
<% if (my $message = stash 'message' ) { %>
<b><%= $message %></b><br>
<% } %>
%布局“默认”;
%标题“登录”;
登录

(方法=>'post')=>begin%> 姓名:
密码:

谢谢。

需要使用Flash在会话中的当前查询和下一查询之间保存数据。因此,
flash
数据不会立即放置在会话中

因此,您必须执行
重定向到('login\u page')
,但
呈现('login\u page')
除外

如果不想执行重定向,则必须将数据保存到
存储库中

sub main {
  my $self = shift;
 if ( $self->is_user_authenticated ) {
    $self->redirect_to('/main/cp');
  } else {
    $self->stash( message => 'You must log in to view this page' );
    $self->render('login');
  }
}
模板:

% layout 'default';
% title 'Login';
<h1>Log In</h1>
<% if (my $message = flash 'message' ) { %>
<b><%= $message %></b><br>
<% } %>
<%= form_for login => (method => 'post') => begin %>
Name: <%= text_field 'name' %>
<br>
Password: <%= password_field 'pass' %>
<br>
<%= submit_button 'Login' %>
<% end %>
% layout 'default';
% title 'Login';
<h1>Log In</h1>
<% if (my $message = stash 'message' ) { %>
<b><%= $message %></b><br>
<% } %>
%布局“默认”;
%标题“登录”;
登录