这是我的代码
public function login_Post()
{
if (Auth::user()->attempt(array('email' => Input::get('email'), 'password' => Input::get('password'), 'active' => 1)))
{
Event::fire('users.login');
return Redirect::to('/')->with('message', 'succsed');
}
else
return Redirect::to('user/login')->withInput(Input::except('password'));
}
我想要警告用户,当他/她不活跃时,我是否可以通过错误的用户名或密码激活我的激活要求或登录失败?
答案 0 :(得分:2)
使用您已有代码的最简单方法是先Auth::attempt()
,然后检查active
属性,以便返回单独的错误。
<强>控制器:强>
public function login_Post()
{
if (Auth::attempt(array('email' => Input::get('email'), 'password' => Input::get('password'))))
{
if(!Auth::user()->active)
{
Auth::logout();
return Redirect::to('user/login')->with('errors', ['Your account hasn't been activated']);
}
Event::fire('users.login');
return Redirect::to('/')->with('message', 'succsed');
}
else
return Redirect::to('user/login')->withInput(Input::except('password'))->with('errors', ['Authentication failed.']);;
}
然后在错误视图中
@if( Session::get('errors') )
<ul class="error">
@foreach( Session::get('errors') as $message )
@if(is_array($message))
@foreach( $message as $subMessage )
<li>{{ $subMessage }}</li>
@endforeach
@else
<li>{{ $message }}</li>
@endif
@endforeach
</ul>
@endif
答案 1 :(得分:1)
您必须先检查用户是否存在:
if ( ! User::where('email', Input::get('email'))->first())
{
return 'This user does not exists';
}
然后尝试:
Auth::user()->attempt(...);