我正在使用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文件夹中!
答案 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');
}
}
}
在AuthController
中保留身份验证功能,将其原样从homeController
复制。
并更改以下Route
Route::post('/login' , 'HomeController@authenticate');
要
Route::post('/login' , 'Auth\AuthController@authenticate');