2013-03-13 146 views
3

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

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

如果一个未激活的用户可以登录,这并不一定是坏事。您只需确保他们没有权限执行他们不应该做的事情。 – dualed 2013-03-14 11:45:08

回答

4

您必须查询数据库。

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

users 
id  name email active 
--  ---- ----- ------ 
1  alex [email protected] 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

+0

很酷的答案,但它似乎像你的github回购消失了... – driechel 2013-04-22 10:30:51

+1

我更新了链接。是一个新版本,具有不同的文件夹结构。检查一下 – Alex 2013-04-23 09:14:34

0

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

5
if (Auth::attempt(array('email' => $email, 'password' => $password, 'active' => 1))) 
{ 
    // The user is active, not suspended, and exists. 
} 

Authenticating Users

在Laravel 5.3,你可能要覆盖Illuminate\Foundation\Auth\AuthenticatesUserscredentials方法在App \ HTTP \ \控制器验证\ LoginController中添加'active' => 1

+0

你能告诉我在Laravel 5.3中添加这个的位置吗? – 4ndro1d 2016-10-10 11:01:54

+0

链接被破坏,这是L 5.3链接:https://laravel.com/docs/5.3/authentication#authentication-quickstart – 2016-10-12 13:10:51