Menu

9.2. 账户激活

账户激活

现在的登录逻辑是,用户一旦注册成功即可进行登录,本节我们要加入账号激活功能,只有当用户成功激活自己的账号时才能在网站上进行登录。为此,我们将需要为用户表新增两个字段用于保存用户的激活令牌和激活状态。激活令牌用于验证用户身份,激活状态则用于判断用户是否已激活。

整个激活流程如下:

  1. 用户注册成功后,自动生成激活令牌;
  2. 将激活令牌以链接的形式附带在注册邮件里面,并将邮件发送到用户的注册邮箱上;
  3. 用户点击注册链接跳到指定路由,路由收到激活令牌参数后映射给相关控制器动作处理;
  4. 控制器拿到激活令牌并进行验证,验证通过后对该用户进行激活,并将其激活状态设置为已激活;
  5. 用户激活成功,自动登录;

接下来让我们跟之前一样,新建一个 Git 分支来开发新功能。

$ git checkout master
$ git checkout -b account-activation-password-resets

注:有些同学在疑惑 Laravel 自带了 Email 认证 功能,为什么我们不...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 36

um-summer
proHorry
针对本章的一些小问题提出建议
3 个点赞 | 4 个回复 | 分享 | 课程版本 5.5
老好人
激活路由是不是应该再增加一个{user}参数?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
caojianx
邮件激活里的 Mail::send () 闭包函数的 message 哪里来的?
2 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
jackmeng
请问,Email 用的是哪个类?
1 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
Apress
为何初始化是否激活状态都是激活呢?不应该是未激活么
1 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
FakeSPrite
在线上 Heroku 里面怎么查看 log?
1 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Innocence6
为什么我访问注册界面直接跳转到了 login 界面?
1 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
JasonLi
activation_token 为 Null,creating 方法没执行?
1 个点赞 | 0 个回复 | 问答 | 课程版本 5.7
XiaYen
点击邮箱激活链接后报错?
0 个点赞 | 10 个回复 | 问答 | 课程版本 5.5
permission
创建用户和发送邮件怎么保证原子性?
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
kitty
在使用中间件时加入的 confirmEmail,不太理解?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
Demo
如何让邮件真正发送出去?
0 个点赞 | 4 个回复 | 分享 | 课程版本 5.5
Yueyue
执行 PHP artisan migrate 时出错
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
mindgame1976
邮件确认链接中为何没有挂上 token?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
惊风破浪
这个邮件是怎么配置的?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
xinjiahui
$token 的值是有的,但是这个 User::where 没有东西啊?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
anningri
View [emails.confirm] not found.
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
abc20082009
use Auth,use Mail 在哪里
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
gyp719
想问下 activation_token 是怎么生成的?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
Ryuuki
confirm 模板中<a>标签生成链接出错
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
jiangpanyue
PHP artisan migrate:refresh --seed 報錯
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
cnguu
没有收到邮件时如何重新发送?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
badnha
发送邮件失败
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7
aelephant
关于"530"报错:Authentication required 的解决方案:
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.7
Marc
邮件的 view 渲染失败
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7
mmmm
这邮箱发送功能就是个垃圾根本没法使用
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.5
刻意练习,每日精进。
6
点赞
4020
浏览
36
讨论