到目前为止,我已经制作了一个带有登录/注册功能的应用程序,它运行良好。注册后,会发送一封欢迎电子邮件。
但我想做的是在邮件中发送一个链接,只有点击后才能登录。
像论坛等常见的注册电子邮件。
有人能帮我吗?
这是postRegister方法:
public function postRegister()
{
$input = Input::all();
$rules = array(
'username' => 'required',
'password' => 'required');
$validation = Validator::make($input, $rules);
if ($validation->passes()) {
$password = $input['password'];
$password = Hash::make($password);
$user = new User;
$user->username = $input['username'];
$user->email = $input['email'];
$user->password = $password;
$mailer = new MailersUserMailer($user);
// var_dump($mailer);
$mailer->welcomeMail()->deliver();
$user->save();
return Redirect::to('afterRegister');
}
return Redirect::back()->withInput()->withErrors($validation)->with('message', 'Validation Errors!');
}
感谢
这里有一些线索(不会为您编写代码)。
- 在用户表中添加两个字段:
confirmation
、confirmed
- 在Laravel中创建一个类似
registration/verify/{confirmation}
的路由,在该路由中,您尝试在DB中查找具有给定确认码的用户(如果找到,请将用户的confirmed
字段设置为1) - 在用户注册后,生成一个唯一的确认代码(您可以使用
str_random()
助手函数) - 相应地设置新用户的DB条目(
confirmation
=随机码,confirmed
=0) - 在给新用户的电子邮件中包含一个验证链接(根据您的验证路线构建)和生成的确认码
Auth尝试现在可以这样做:
$user = array(
'username' => Input::get('username'),
'password' => Input::get('password'),
'confirmed' => 1
);
if (Auth::attempt($user)) {
// success!
return Redirect::route('restricted/area');
}