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 安装扩展包
Laravel Vuejs 实战:开发知乎 (2)用户注册的更多相关文章
- Laravel Vuejs 实战:开发知乎 (6)发布问题
1.view部分: 安装一个扩展包:Laravel-UEditor composer require "overtrue/laravel-ueditor:~1.0" 配置 添加下面 ...
- Laravel Vuejs 实战:开发知乎 (10)使用 Select2 优化话题选择
1.添加选择Topic 使用Select2,如何安装Select2 ,具体使用实例 Select2 and Laravel: Ajax Autocomplete 及 Loading data remo ...
- Laravel Vuejs 实战:开发知乎 (9)定义话题与问题关系
1.话题[Topic] 执行命令: php artisan make:model Topic –cmr 修改****_**_**_create_topics_table.php数据库迁移文件如下: c ...
- Laravel Vuejs 实战:开发知乎 (8)美化编辑器
1.使用UEditor增量包: simple-ueditors 执行下载: git clone https://github.com/JellyBool/simple-ueditor.git 2.用此 ...
- Laravel Vuejs 实战:开发知乎 (3)本地化和自定义消息
1.本地化 由于所有blade默认采用的是 _('')方式输出标签文本,所以可以安装一个语言包,直接指定本地语言为zh_CN即可: 安装 https://github.com/caouecs/Lara ...
- Laravel Vuejs 实战:开发知乎 (2)用户登录
1.安装一个给用户提示的扩展包: 二选一: https://github.com/laracasts/flash [我选的这个]https://github.com/oanhnn/laravel-fl ...
- Laravel Vuejs 实战:开发知乎 (1)项目环境配置和用户表设计
1.使用laragon新建laravel项目 zhihu 2.配置env文件的database设置 DB_DATABASE=zhihu 3.分析users表需要的字段 4.修改数据库迁移文件: cla ...
- Laravel Vuejs 实战:开发知乎 (5)设计问题表
1.执行命令: php artisan make:model Models/Question -cm 2.设计问题的数据库迁移文件中的字段: <?php use Illuminate\Datab ...
- Laravel Vuejs 实战:开发知乎 (7)验证问题表单字段
上一节代码中已经实现 下面代码中的validate内部配置就是: public function store(Request $request) { // $data = $request->v ...
随机推荐
- js - 子节点
子节点数量:this.wdlgLossInfo.childNodes.length
- 关于RTP时间戳及多媒体通信同步的问题(转)
文章转载自:罗索实验室 [http://www.rosoo.net/a/201101/10776.html]
- laravel路由组中namespace的的用法详解
做公司一个项目的时候发现laravel框架中可以省去action的路径前缀的用法: ps:用简短的话来理解就是说在路由组中定义namespace,可以省去你路由的前缀下面看例子 最终显示如下: 定义的 ...
- jQuery实现TAB选项卡切换特效简单演示
本文实例为大家分享jQuery实现TAB选项卡切换特效,供大家参考,具体内容如下 1.tab切换 on ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...
- ts中接口的用法
ts中的接口主要的作用是: 对“对象”进行约束描述 对“类”的一部分行为进行抽象 一.属性接口 接口中可定义 确定属性.可选属性.任意属性.只读属性 1.确定属性 interface UserInfo ...
- 2.(group by)如何让分组后,每组中的数据按时间倒序排列(group by和 order by的分组按排列)
比如说有表devicedata: 问题: 现在我想将devicedata这个表中的数据,先按device_id这个字段分组,然后每组中的数据按时间字段ts从大到小的排列, 如何解决呢? 错误的sql: ...
- AcWing 900. 整数划分
#include <iostream> #include <algorithm> using namespace std; , mod = 1e9 + ; int n; int ...
- [lua]紫猫lua教程-命令宝典-L1-01-11. lua的个人补充
1.关于三目运算符的一些补充和纠正 前面没看仔细 a>b ? a: b 这个形式 似乎lua下并不存在...要了命 一般都是使用 a and b or c 的形式 但是这种形式存在一些问题 ...
- 安装rocky版本:openstack-nova-compute.service 计算节点服务无法启动
问题描述:进行openstack的rocky版本的安装时,计算节点安装openstack-nova-compute找不到包. 解决办法:本次实验我安装的rocky版本的openstack 先安装cen ...
- Js选择器总结
一.原生JS选择器 JS选择器常用的有getElementById().getElementsByName().getElementsByTagName().getElementsByClassNam ...