Laravel Vuejs 实战:开发知乎 (2)用户注册
1.本节需要发送验证邮件
2.教程使用SendCloud发送邮件 【我使用的是mailtrap】
3.
1 composer require laravel/ui
安装完成后
1 php artisan ui vue –auth
4.RegisterController中create方法内实现用户创建的默认值配置
1 class RegisterController extends Controller 2 { 3 /* 4 |-------------------------------------------------------------------------- 5 | Register Controller 6 |-------------------------------------------------------------------------- 7 | 8 | This controller handles the registration of new users as well as their 9 | validation and creation. By default this controller uses a trait to 10 | provide this functionality without requiring any additional code. 11 | 12 */ 13 14 use RegistersUsers; 15 16 /** 17 * Where to redirect users after registration. 18 * 19 * @var string 20 */ 21 protected $redirectTo = RouteServiceProvider::HOME; 22 23 /** 24 * Create a new controller instance. 25 * 26 * @return void 27 */ 28 public function __construct() 29 { 30 $this->middleware('guest'); 31 } 32 33 /** 34 * Get a validator for an incoming registration request. 35 * 36 * @param array $data 37 * @return \Illuminate\Contracts\Validation\Validator 38 */ 39 protected function validator(array $data) 40 { 41 return Validator::make($data, [ 42 'name' => ['required', 'string', 'max:255'], 43 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 44 'password' => ['required', 'string', 'min:8', 'confirmed'], 45 ]); 46 } 47 48 /** 49 * Create a new user instance after a valid registration. 50 * 51 * @param array $data 52 * @return \App\User 53 */ 54 protected function create(array $data) 55 { 56 return User::create([ 57 'name' => $data['name'], 58 'email' => $data['email'], 59 'avatar' => '/image/avatars/default.png', 60 //这里其实不需要再设置activation_token的值,也不需要再在验证后设置activated=1 采用Laravel提供的新功能验证用户邮箱即可 默认带一个email_verified_at字段,且更加完善具有过期时间戳和签名 61 'activation_token' => str_random(),//通过composer require laravel/helpers安装扩展包 62 'password' => Hash::make($data['password']), 63 ]); 64 } 65 } 66
注意:去掉教程当中发送邮件部分的代码,直接使用默认的Laravel提供的邮件验证流程 User.php实现MustVerifyEmail及verify的添加:如下三个文件内部的代码
User.app中:
1 class User extends Authenticatable implements MustVerifyEmail 2 { 3 use Notifiable; 4 5 /** 6 * The attributes that are mass assignable. 7 * 8 * @var array 9 */ 10 protected $fillable = [ 11 'name', 'email', 'password', 'avatar', 'activation_token' 12 ]; 13 14 /** 15 * The attributes that should be hidden for arrays. 16 * 17 * @var array 18 */ 19 protected $hidden = [ 20 'password', 'remember_token', 21 ]; 22 23 /** 24 * The attributes that should be cast to native types. 25 * 26 * @var array 27 */ 28 protected $casts = [ 29 'email_verified_at' => 'datetime', 30 ]; 31 }
HomeController当中:
1 class HomeController extends Controller 2 { 3 /** 4 * Create a new controller instance. 5 * 6 * @return void 7 */ 8 public function __construct() 9 { 10 $this->middleware(['auth', 'verified']); 11 } 12 13 /** 14 * Show the application dashboard. 15 * 16 * @return \Illuminate\Contracts\Support\Renderable 17 */ 18 public function index() 19 { 20 return view('home'); 21 } 22 }
web.php当中:
1 <?php 2 3 /* 4 |-------------------------------------------------------------------------- 5 | Web Routes 6 |-------------------------------------------------------------------------- 7 | 8 | Here is where you can register web routes for your application. These 9 | routes are loaded by the RouteServiceProvider within a group which 10 | contains the "web" middleware group. Now create something great! 11 | 12 */ 13 14 Route::get('/', function () { 15 return view('welcome'); 16 }); 17 18 Auth::routes(['verify' => true]); 19 20 Route::get('/home', 'HomeController@index')->name('home'); 21
5.要使用helper方法需要 composer require laravel/helpers 安装扩展包