Php 如何检查用户';s状态在laravel 5.x中处于活动状态?
我在Laravel5.2提供的AuthController中设置了一些不同的登录逻辑。代码是Php 如何检查用户';s状态在laravel 5.x中处于活动状态?,php,laravel,laravel-authorization,Php,Laravel,Laravel Authorization,我在Laravel5.2提供的AuthController中设置了一些不同的登录逻辑。代码是 protected function authenticated(Request $request) { $email = $request->input('email'); $password = $request->input('password'); if (Auth::attempt(['email' => $ema
protected function authenticated(Request $request)
{
$email = $request->input('email');
$password = $request->input('password');
if (Auth::attempt(['email' => $email, 'password' => $password, 'is_active' => 1])) {
return redirect()->intended('admin/dashboard');
}
return $this->sendFailedLoginResponse($request);
}
代码运行良好。但问题是,当用户不处于活动状态时,它仍然会以用户身份登录。那么,如何停止使用is_active=0
对用户进行身份验证
更新:用户迁移
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->tinyInteger('is_active', 0);
$table->rememberToken();
$table->timestamps();
});
这是正确的方法:
您的方法将不起作用,因为Laravel默认的Auth::TRUMENT不会检查处于活动状态。您可以发布您的用户迁移吗。您尝试使用的逻辑是正确的,因此可能列类型有问题或类似问题。如果您在用户模型上使用[Soft Delete][1],Laravel将自动为您执行此操作。您只需将您的
处于活动状态
转换为列[1]中的已删除:@LionelShrestha我已编辑您的问题,以包含您上述评论中的相关代码。将来,最好在问题中添加代码,而不是注释。根据经验,用于这些类型字段的最佳字段类型应为布尔型。雄辩负责将0和1转化为谎言和真理<代码>$table->boolean('is_active')->默认值(false)代码>虽然我同意@PatrickStephan,但您的逻辑应该是有效的。Laravel docs for也使用您的方法。我还检查了illumb\Auth\SessionGuard.php
中的trunt
方法,按照流程,这种方法似乎应该有效。您是否尝试过清除缓存然后重试?此方法确实调用了lastAttempted
方法,可能那里有过时的数据?