用户注册后,我发送了一封电子邮件激活帐户,但即使帐户尚未激活,用户也可以登录。如何验证用户帐户是否已激活?
if (Auth::attempt(array('email' => $email, 'password' => $password))) {
// Success login
} else {
// Login fail
}
if (Auth::attempt(array('email' => $email, 'password' => $password, 'active' => 1)))
{
// The user is active, not suspended, and exists.
}
在 Laravel 5.3 中,您可能希望覆盖App\Http\Controllers\Auth\LoginController 中Illuminate\Foundation\Auth\AuthenticatesUsers
的credentials
方法以添加'active' => 1
.
您必须查询数据库。
如果您有以下数据库架构:
users
id name email active
-- ---- ----- ------
1 alex a@a.a 0
您可以执行以下操作
if( ! User::where_email($email)->only('active')) // Adapt the where to your needs
echo "User not active"
else
echo "User active"
我写了一个 Laravel REST API 演示服务(我使用它),它实际上有一个检查用户是否被激活的部分:在这里找到它https://github.com/w0rldart/lRapi/blob/master/api /controllers/api/user.php
使用密钥向用户电子邮件发送链接,该密钥必须是唯一的,例如他们的电子邮件地址的哈希值,其中您的应用程序密钥作为盐。有一个此链接指向的端点,使用我上面提到的过程检查链接是否有效。如果您生成的密钥与电子邮件链接中的密钥匹配,那么您可以验证他们的帐户并将他们重定向到登录页面。