查看Laravel Auth中的更多字段

时间:2016-08-06 11:19:32

标签: laravel-5.2

我正在使用Laravel 5.2。在登录时我想在用户尝试登录时检查更多字段,例如is_active。我该怎么做?感谢。

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('first_name', 32)->nullable();
        $table->string('last_name', 32)->nullable();
        $table->string('username', 64)->unique();
        $table->string('email', 64)->unique();
        $table->boolean('type')->default(2);
        $table->boolean('is_active')->default(0);
        $table->integer('reputation')->default(0);
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}

这是我的路线:

Route::auth();
Route::post('/login' , 'HomeController@authenticate');

我如何使用AuthController而不是Home控制器? AuthController在Auth文件夹中!

1 个答案:

答案 0 :(得分:1)

如laravel Documentation

中所述
  

指定附加条件

     

如果您愿意,还可以为身份验证添加额外条件   查询以及用户的电子邮件和密码。例如,我们   可以验证用户是否标记为“is_active”:

if (Auth::attempt(['email' => $email, 'password' => $password, 'is_active' => 1])) {
            // The user is active, not suspended, and exists.
        }

更新

将以上代码添加到您的Auth Controller

<?php

namespace App\Http\Controllers;

use Auth;

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

更新2:

AuthController中保留身份验证功能,将其原样从homeController复制。

并更改以下Route

Route::post('/login' , 'HomeController@authenticate');

Route::post('/login' , 'Auth\AuthController@authenticate');