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  安装扩展包

posted @ 2020-02-27 01:14  dzkjz  阅读(408)  评论(0编辑  收藏  举报