用户注册后我发邮件激活账号,但用户未激活账号也可以登录。如何验证用户帐号是否已激活?
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'AuthenticatesUsers
的credentials
方法在你的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
发送一个带有秘密密钥的链接到用户的电子邮件,该密钥必须是唯一的,例如他们的电子邮件地址的散列与您的应用程序秘密密钥作为盐。有一个该链接指向的端点,该端点使用我上面提到的过程检查链接是否有效。如果您生成的密钥与电子邮件链接中的密钥匹配,那么您可以验证他们的帐户并将其重定向到登录页面。