我使用相同的方法来获取和发布登录身份验证请求,如
public function login()
{
if (Request::isMethod('post')){
// Getting credentials
$username = Input::get('username');
$password = Input::get('password');
// Authenticating super admin
if(Auth::attempt(array('email'=>$username,'password'=>$password,'sysadmin'=>1))){
return Redirect::To('superadmin');
}else{
Session::flash('message', 'Invalid Credentials !');
return View::make('superadmin::login');
}
}else{
echo View::make('superadmin::login');
}
}
这是显示错误消息的登录视图代码:
@if(Session::has('message'))
<div class="alert-box message">
<h2>{{ Session::get('message') }}</h2>
</div>
@endif
问题是当我在登录时输入无效凭据时,表单上会显示错误消息,但在手动刷新登录页面之后,会话消息不会消失。在第二次页面刷新时,会话消息消失。
我知道这种情况正在发生,因为URL(引用者)在我的情况下保持相同,因为同样的方法“login”用于两种类型的请求(get和post)。
在这种情况下显示错误消息的最佳方法是什么,以便在页面刷新或自动消息消失。
答案 0 :(得分:3)
这是一个老问题,但我想解释最简单的方法:
@if(Session::has('message'))
<div class="alert-box message">
<h2>{{ Session::pull('message') }}</h2>
</div>
@endif
答案 1 :(得分:2)
这不是更适合吗?
return View::make('superadmin::login')->with('message', 'Invalid credentials');
然后在你看来:
@if($message)
<div class="alert-box message">
<h2>{{ $message }}</h2>
</div>
@endif
这是因为你不需要闪光,因为在闪光后你永远不会使用重定向。
答案 2 :(得分:1)
我宁愿使用Session:now()
而不是Session:flash()
就是这样。方法now
闪烁消息以立即使用。