不允许非活动用户在Laravel中登录

时间:2017-02-21 16:53:31

标签: laravel authentication laravel-5

我是Laravel的新手,我已经与用户建立了一个系统。验证用户是通过“php artisan make:auth”完成的,我在users表中有一个名为activated的列;当activated = 0时,我不希望用户登录。请帮助一下?对不起,如果这个线索一直很无聊。

2 个答案:

答案 0 :(得分:0)

您需要使用AuthenticatesUsers特征或手动部分AuthController来处理此问题,方法是检查登录表单中的回复并返回相应的回复:

<?php

namespace App\Http\Controllers;

use App;

use Illuminate\Auth\AuthManager;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

/**
 * Class AuthController
 * @package Speechlink\Http\Controllers\Auth
 */
class AuthController extends Controller
{
    use AuthenticatesUsers;

    /**
     * Create a new authentication controller instance.
     * @param AuthManager      $auth
     */
    public function __construct(AuthManager $auth)
    {
        $this->auth = $auth;
    }

    /**
     * Deal with the login attempt (overrides the trait's postLogin method)
     *
     * @param Request $request
     * @return $this|\Illuminate\Http\RedirectResponse
     */
    public function postLogin(Request $request)
    {
        $this->validate($request, [
            'username' => 'required',
            'password' => 'required',
        ]);

        $credentials = $request->only('username', 'password');

        if ($this->auth->attempt($credentials)) {
            // We authenticated so continue
            return redirect('path/to/logged_in');
        } else {
            // We failed authentication so redirect somewhere else
            return redirect('path/to/disabled_user');
        }

    }
}

答案 1 :(得分:-1)

我发现自己,我只是将其添加到myLoginController.php

  protected function credentials(Request $request)
{
    $credentials = $request->only($this->username(), 'password');
    $credentials['activated'] = 1;

    return $credentials;
}