注册后激活用户账号


Activate user account after register

用户注册后我发邮件激活账号,但用户未激活账号也可以登录。如何验证用户帐号是否已激活?

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你可能想要覆盖Illuminate'Foundation'Auth'AuthenticatesUserscredentials方法在你的App'Http'Controllers'Auth'LoginController添加'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

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