9.2. 账户激活

本教程最新版为 9.x,当前版本已放弃维护,请阅读最新版本!

账户激活

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

整个激活流程如下:

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

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

$ git checkout master
$ git checkout -b account-activation-password-r...

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

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

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:1
讨论数量: 47

aelephant
关于"530"报错:Authentication required 的解决方案:
6 个点赞 | 5 个回复 | 分享 | 课程版本 5.7
ruodee
激活路由是不是应该再增加一个{user}参数?
3 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
Liuchengxing
UsersController 要加 use Auth;
3 个点赞 | 4 个回复 | 分享 | 课程版本 6.x
proHorry
针对本章的一些小问题提出建议
3 个点赞 | 4 个回复 | 分享 | 课程版本 5.5
caojianx
邮件激活里的 Mail::send () 闭包函数的 message 哪里来的?
2 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
jackmeng
请问,Email 用的是哪个类?
1 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
Apress
为何初始化是否激活状态都是激活呢?不应该是未激活么
1 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
Li_haoran812
parent::boot();怎么理解
1 个点赞 | 1 个回复 | 问答 | 课程版本 6.x
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 个点赞 | 8 个回复 | 问答 | 课程版本 5.5
kitty
在使用中间件时加入的 confirmEmail,不太理解?
0 个点赞 | 5 个回复 | 问答 | 课程版本 5.5
Demo1
如何让邮件真正发送出去?
0 个点赞 | 4 个回复 | 分享 | 课程版本 5.5
Yueyue
执行 PHP artisan migrate 时出错
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
mindgame1976
邮件确认链接中为何没有挂上 token?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
xuluchuan
email_verified_at
0 个点赞 | 2 个回复 | 分享 | 课程版本 6.x
holyLight
可不可以在迁移文件里,而不是 User.php 里,生成令牌?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.8
jfpl
这个邮件是怎么配置的?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
Boxer
use Auth,use Mail 在哪里
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
gyp719
想问下 activation_token 是怎么生成的?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
这邮箱发送功能就是个垃圾根本没法使用
0 个点赞 | 2 个回复 | 分享 | 课程版本 5.5
xinjiahui
$token 的值是有的,但是这个 User::where 没有东西啊?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
Fzyyy
注册用户时未生成activation_token,怀疑是creating方法失效
0 个点赞 | 1 个回复 | 问答 | 课程版本 7.x
anningri
View [emails.confirm] not found.
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
Hpeng
confirmEmail的方法不存在,他是什么逻辑执行
0 个点赞 | 0 个回复 | 问答 | 课程版本 9.x
oceanMIH
使用$user->update(), 一次更新多个字段。
0 个点赞 | 0 个回复 | 分享 | 课程版本 5.8
kakaxi
为什么boot中对模型实例的赋值,不需要调用save
0 个点赞 | 0 个回复 | 问答 | 课程版本 7.x
dggg
报错 0passed and exactly1expected 好像是 token 进不去
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.8
badnha
发送邮件失败
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7
Marc
邮件的 view 渲染失败
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7