laravel的用户修改密码与绑定邮箱的详细操作
作者:陆小天奥利给 发布时间:2023-06-17 09:55:06
标签:python,绑定邮箱,修改密码
一、修改密码
1.1 创建修改密码控制器
运行命令php artisan make:controller Auth/PasswordController
写入修改密码方法:
/**
* 修改密码
*/
public function updatePassword(Request $request) {
$request->validate([
'old_password' => 'required|min:6|max:16',
'password' => 'required|min:6|max:16|confirmed',
], [
'old_password.required' => '旧密码不能为空',
'old_password.min' => '旧密码最少6个字符',
'old_password.max' => '旧密码最多16个字符',
]);
// 旧密码
$old_password = $request->input('old_password');
// 用户实例
$user = auth('api')->user();
// 验证旧密码是否正确
if (!password_verify($old_password, $user->password)) {
return $this->response->errorBadRequest('旧密码不正确');
}
// 更新用户密码
$user->password = bcrypt($request->input('password'));
$user->save();
return $this->response->noContent();
}
1.2 创建修改密码路由
// 修改密码
$api->post('password/update', [PasswordController::class, 'updatePassword']);
1.3 测试效果
二、绑定邮箱
2.1 绑定邮箱控制器
运行命令php artisan make:controller Auth/BindController
创建绑定邮箱的控制器:
写入发送邮箱验证码和更新邮箱的处理函数:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\BaseController;
use App\Mail\SendEmailCode;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class BindController extends BaseController
{
/**
* 获取邮件的验证码
*/
public function emailCode(Request $request) {
$request->validate([
'email' => 'required|email'
]);
// 发送验证码到邮件
Mail::to($request->input('email'))->queue(new SendEmailCode($request->input('email')));
return $this->response->noContent();
}
/**
* 更新邮箱
*/
public function updateEmail(Request $request) {
$request->validate([
'email' => 'required|email',
'code' => 'required'
], [
'code.required' => "验证码不能为空",
]);
// 验证code是否正确
if (cache($request->input('email')) != $request->input('code')) {
return $this->response->errorBadRequest('验证码或邮箱错误!');
}
// 更新邮箱
$user = auth('api')->user();
$user->email = $request->input('email');
$user->save();
return $this->response->noContent();
}
}
如果修改了队列了,就要重启队列,命令sudo supervisorctl restart all
2.2 创建对应路由
// 发送邮件验证码
$api->post('email/code', [BindController::class, 'emailCode']);
// 更新邮箱
$api->post('email/update', [BindController::class, 'updateEmail']);
2.3 创建发送邮件的类
运行命令php artisan make:mail SendEmailCode
:
写入:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Cache;
class SendEmailCode extends Mailable
{
use Queueable, SerializesModels;
protected $email;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($eamil)
{
$this->email = $eamil;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
// 生成code
$code = rand(1000, 9999);
// 获取邮箱
// 使用缓存邮箱对应的code
Cache::put($this->email, $code, now()->addMinute(5)); // 5分钟过期
return $this->view('emails.send-email-code', ['code' => $code]);
}
}
创建发送邮件的模版:
模版写入:
<h3>邮箱验证码是:{{$code}}</h3>
<h3>验证码5分钟内有效,请及时使用!</h3>
2.4 测试效果
可以看到这边收到邮箱验证码。
测试更新的输入邮箱不正确或者验证码不正确:
输入正确的邮箱和验证码就会修改了。
来源:https://blog.csdn.net/weixin_44103733/article/details/120121853
0
投稿
猜你喜欢
- 今天在看见了一堆不错的非洲的web 2.0网站的Logo,于大家一起欣赏:非洲web2.0网站的logo大部分和平时看见的web2.0网站l
- 数组去重复和数组排序'数组名次 Function Sort(ary,stra) KeepChecking =&n
- Windows客户端业务群产品营销主管斯蒂芬最近在向记者示范Internet Explorer 8 Beta2版浏览器的技术特征时标识,与用
- 当服务器必须提供与两个或更多个网络或网络子网的连接时,典型的方案是使用多宿主计算机。此计算机通常位于外围网络(也称为 DMZ、外围安全区域或
- 我希望大家看到该标题就能让想象到它的功能: 1、WITH TEMPL
- 技巧1XmlNode.InnerText与.InnerXml的区别是:前者将内容中的<和>分别变成<和>,因此,希望
- 第一种方法: 代码如下:Minimsdn.com为您提供的代码: -- Turn ON [Display IO Info when exec
- 在做网站产品展示页面时,一般会用到缩略图,好处当然是直观醒目让人一目了然。点击进入然后看到大图及具体的介绍。但是缩略图在实现上带来了两个问题
- SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
- DBA_2PC_PENDING Oracle会自动处理分布事务,保证分布事务的一致性,所有站点全部提交或全部回滚。一般情况下,处理过程在很短
- 这世上“没有丑女人,只有懒女人”这是女人美丽圣经里的最精彩的一句话了,一个女人只要舍得花时间琢磨怎么保养,怎么打扮,总能够找到方法展现自己美
- 它在Lynx里也会运行得很好:<%@ Language=VBScript %><HTML><
- 最近论坛里总有人问幻灯片怎么从数据库里取数据,花了几分钟简单的写了下。用到的人可以自己在细化<%dim rs,sqlset&
- 远程(如通过互联网)连接access数据库的示例:首先,需要使用TCP/IP,ADO及XML(需要安装Microsoft XML 4.0。)
- oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果。正因为快照是一个主表的查询子集,使用快照可
- 引子:今天在蓝点看了Yang的博客《CSS样式表中继承关系的空格与不空格》,思考了一下,本来想写《CSS样式的复合定义与复合调用及简单的模块
- 学习使用存储过程(Stored Procedure),是ASP程序员的必须课之一。所有的大型数据库都支持存储过程,比如Oracle
- 看了网站LOGO设计规范的思考的第一部分关于logo设计基础,现在接着来谈谈网络LOGO的设计。四、网络LOGO的设计 古代皇家的纹章,有条
- 这片文章只对本地存储方法做介绍,若要查看本地存储组件使用方法的介绍请稍等。本地数据持久化(或者也叫做浏览器本地存储)是一种在浏览器中长久保存
- 内容摘要:浏览器不兼容这个难题,一直是网页设计师们头痛的事情。ie7.0的面世,尚且不论他是否较之ie6.0进步, ie7和ie6