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

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

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修改密码内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

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

相关文章

php7中停止php-fpm服务的方法详解

在PHP生命周期的各个阶段,一些与服务相关的操作都是通过SAPI接口实现。各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口。在PHP的源码中,当需要调用服务器相关信息时,全部通过SAP...

laravel使用redis队列实例讲解

1、队列配置文件是config/queue.php(这里我默认配置即可):2、 创建迁移表(failed-table 、jobs、migrations)php artisan queue:tablep...

如何在thinkphp中使用windows计划任务定时执行php文件

实现思路如下:通过win的“任务”功能来定时执行一个bat文件,bat文件会调用php.exe文件,php.exe可以传递参数指定执行哪个类和方法方法如下:一,thinkphp...

gpu服务器有哪些分类呢租用美国GPU服务器配置和报价有哪些

gpu服务器有哪些分类呢?gpu擅长处理大规模深度合作学习能力训练方法以及其他部分典型Hpc任务。经常有朋友在咨询公司如何有效配置可以用于深度学习或计算加速的gpu服务器,今天我们就来看看吧!gpu服...

韩国站群服务器原生IP如何辨别?韩国多ip服务器购买需要注意哪些事项?

不少客户在购买韩国站群服务器时会咨询是否原生ip,因为某些特定运用会严格限制ip,例如做外贸电子商务的客户,如果是原生ip就比较好注册和使用体验。依据ip可以和地理位置信息绑定的特性,可以可以分为原生...

GPU服务器可以玩手机游戏吗便宜的美国GPU服务器价格

一般服务器不配显卡,加装显卡的服务器。它可以用于异构计算。GPU用于大大加速CPU不太擅长的浮点运算。一般用于3D图形应用、视频解码、深度学习、科学计算或运行Android手机模拟器,适用于手机游戏挂...