3

用户注册后,我发送了一封电子邮件激活帐户,但即使帐户尚未激活,用户也可以登录。如何验证用户帐户是否已激活?

if (Auth::attempt(array('email' => $email, 'password' => $password))) {
  // Success login
} else {
  // Login fail
}
4

3 回答 3

5
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\AuthenticatesUserscredentials方法以添加'active' => 1.

于 2013-06-20T15:38:48.763 回答
4

您必须查询数据库。

如果您有以下数据库架构:

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

于 2013-03-13T23:53:42.257 回答
0

使用密钥向用户电子邮件发送链接,该密钥必须是唯一的,例如他们的电子邮件地址的哈希值,其中您的应用程序密钥作为盐。有一个此链接指向的端点,使用我上面提到的过程检查链接是否有效。如果您生成的密钥与电子邮件链接中的密钥匹配,那么您可以验证他们的帐户并将他们重定向到登录页面。

于 2013-03-14T00:33:44.303 回答