Laravel 5.3 附加条件认证

Laravel 5.3 Authentication with additional condition

Laravel 5.3 发生了一些变化。在文档中有这个控制器,我们可以在其中添加我们的附加条件:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;

class AuthController extends Controller
{
    /**
     * Handle an authentication attempt.
     *
     * @return Response
     */
    public function authenticate()
    {
        if (Auth::attempt(['email' => $email, 'password' => $password])) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }
    }
}

但是这个控制器:AuthController 不存在了..... 只有 LoginController

我应该创建那个 AuthController 还是什么?

所以问题是如何为用户增加一个登录条件

'active' => 1

您可以使用 5.3 中的 LoginController。做你想做的事情的一种方法是覆盖 sendLoginResponse() 方法并在它的开头添加这样的东西:

if (!auth()->user()->active) {
    auth()->logout();
    return redirect('/');
}

如果用户不活动,这将注销他并将他重定向到根目录。这将工作是 active 是布尔值。

您可以在 LoginController 中指定一个 additional condition,例如 'active' = 1:

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
    /**
     * Handle an authentication attempt.
     *
     * @return Response
     */
    public function authenticate(Request $request)
    {
        $email = $request->input('email');
        if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
            // Authentication passed...
            return redirect()->intended('dashboard');
        }
    }
}