laravel的用户修改密码与绑定邮箱的详细操作

admin3年前PHP教程60
一、修改密码

1.1 创建修改密码控制器

运行命令php artisan make:controller auth/passwordcontroller

写入修改密码方法:

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
     * 修改密码
     */
    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 创建修改密码路由

2
// 修改密码
           $api->post('password/update', [passwordcontroller::class, 'updatepassword']);


1.3 测试效果

二、绑定邮箱

 2.1 绑定邮箱控制器

运行命令php artisan make:controller auth/bindcontroller创建绑定邮箱的控制器:

写入发送邮箱验证码和更新邮箱的处理函数:

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?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 创建对应路由

2
3
4
5
// 发送邮件验证码
          $api->post('email/code', [bindcontroller::class, 'emailcode']);
 
          // 更新邮箱
          $api->post('email/update', [bindcontroller::class, 'updateemail']);


2.3 创建发送邮件的类

运行命令php artisan make:mail sendemailcode:

写入:

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?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 测试效果

可以看到这边收到邮箱验证码。
测试更新的输入邮箱不正确或者验证码不正确:

输入正确的邮箱和验证码就会修改了。

到此这篇关于laravel的用户修改密码与绑定邮箱的文章就介绍到这了,更多相关laravel修改密码内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

php将xml转化对象的实例详解

XML文件?1$xml= "123456";将文件转换成对象?1$objectxml = simplexml_load_string($xml);将对象转换个JSON?1$xmlj...

详解PHP优化巨量关键词的匹配

目录问题由来原始 - grep设计代码进化 - 正则设计正则小坑代码觉醒 - 拆词设计代码结果终级 - Trie树trie树设计代码结果他径 - 多进程设计结果总结问题由来前些天工作中遇到一个问题:有...

docker中实现安装php拓展步骤讲解

一:php核心拓展包安装在docker中安装的php有一些核心的拓展包,他们一般放置在/usr/src/php/ext/目录下如下:docker exec -it php /bin/bash #进入p...

php类自动加载失败的处理方案及实例代码

1、打开相应的PHP代码文件。2、添加“$class = str_replace("\\","/",$class);”代码即可。文件在本...

php短视频源码之瀑布流分割线左右间距问题及解决代码

下面展示一下非瀑布流的item布局情况,每个item的高度都是一样的,所以他的index就是左右左右,position所对应的itemView就是准确的,左0,右1,左2,右3,以此类推&hellip...

详解PHP框架EasySwoole

安装使用 composer 安装composer require easyswoole/easyswoole=3.xphp vendor/bin/easyswoole install启动框架php e...