【发布时间】:2017-03-21 23:08:49
【问题描述】:
我在用户数据库中添加了一个列(is_activated),用于在注册过程中添加验证电子邮件。
我遵循本教程: Tutorial
它可以工作,但未激活的用户可以使用重置密码表单绕过登录功能。
我该如何解决这个问题?
【问题讨论】:
标签: laravel authentication laravel-5.2
我在用户数据库中添加了一个列(is_activated),用于在注册过程中添加验证电子邮件。
我遵循本教程: Tutorial
它可以工作,但未激活的用户可以使用重置密码表单绕过登录功能。
我该如何解决这个问题?
【问题讨论】:
标签: laravel authentication laravel-5.2
您应该create middleware 并将所有未激活的用户重定向回主页,例如:
public function handle($request, Closure $next)
{
if (!auth()->user()->is_activated) {
return redirect('/');
}
return $next($request);
}
然后register this middleware 并用Route::group() 将其应用于所有非公共路由
【讨论】:
auth 中间件组内。好的做法是为此使用单独的中间件。
如果用户被激活,则值为 1,因此在您的函数中集成下一个验证:
// if user not have value 1 (is not activated)
if (auth()->user()->is_activated != 1) {
// user is not activated so redirect to index
return redirect('/');
}
// user is activated so redirect to account
return redirect('account');
}
您需要检查"is_actived" 的值是否为 1。
【讨论】: