Laravel auth检查字段是否为空

问题描述:

Im用户需要通过单击邮箱中的链接激活他们的账户来编辑我的laravel auth。 我的数据库有一个额外的时间戳字段'activated_at'。如何验证'activated_at'是否为空。我发现以下规则自定义验证::Laravel auth检查字段是否为空

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) 
{ 
} 

但是,我应该如何添加一个规则来检查一个值是否为空?

Laravel的用户提供程序试图通过搜索传递给验证::尝试()的用户数据和数据之间的精确匹配加载用户 - 见实施\照亮\身份验证\ DatabaseUserProvider :: retrieveByCredentials()\ Illuminate \ Auth \ EloquentUserProvider :: retrieveByCredentials()取决于您使用的提供程序。因此不可能提供“where field not null”约束到Auth :: attempt()

你可以通过实现你自己的用户提供者来解决这个问题,但我认为这是不值得的。我建议在用户模型中存储is_active标志。

+0

我只想考虑在if(auth){}中检查activated_at,如果测试失败Auth :: logout();它将数据库字段保存在if语句中 –

+0

这是一种矫枉过正的行为。您只需对用户进行身份验证即可立即注销。在数据库中存储额外的标志不会伤害到你。 –