我使用标准的Laravel身份验证。
php artisan make:auth
但我需要检查用户电子邮件的状态(已确认/未确认)。如果未确认,则登录页面中将显示错误。
Laravel 5.2
谢谢!
答案 0 :(得分:0)
在is_verified
表中创建一列verification_hash
和另一列users
。在AuthController.php
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'verification_hash' => md5($data['name'] . Carbon::now()->timestamp),
'is_verified' => 0,
]);
}
覆盖register
方法,向他发送包含验证链接的邮件
public function register(Request $request)
{
$validator = $this->validator($request->all());
if ($validator->fails()) {
$this->throwValidationException(
$request, $validator
);
}
$user = $this->create($request->all());
Auth::guard($this->getGuard())->login($user);
// Send verification email
// use $user->verification_hash to generate link
return redirect($this->redirectPath());
}
现在,此验证链接应如下所示,因为它包含特定于该用户的哈希
http://your_domain.com/auth/verify/6d533b7664483d3cadd13c23477e4f12
在此链接方法上,将is_verified
更改为该用户的1。
现在像这样修改validator
方法
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'username' => 'required|max:255|unique:users',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'is_verified'=>'in:1'
]);
}
这将仅允许那些用is_verified
值为1的用户登录。
希望这会有所帮助。