Laravel Auth登录返回特定错误

时间:2014-08-28 17:15:01

标签: laravel

这是我的代码

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'));
}

我想要警告用户,当他/她不活跃时,我是否可以通过错误的用户名或密码激活我的激活要求或登录失败?

2 个答案:

答案 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(...);