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

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

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

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

相关文章

江苏高防服务器如何安全有效防御DDOS攻击

江苏高防服务器如何安全有效防御DDOS攻击?DDoS(分布式拒绝服务攻击)是一种非常常见的网络攻击方式,它的目的是通过同时向一个网络资源发送大量的请求,以致于让该资源无法响应正常的请求。以下是几种江苏...

显卡服务器好在什么地方江西显卡服务器有什么优点

加显卡的服务器也叫gpu服务器,可以为服务器承担输出显示图形的任务。一般可用于搭建手机模拟器、蓝叠,逍遥,雷电,夜神等。用于手机游戏挂机和自动化脚本运行。其内置的并行计算能力现阶段也用于深度学习等运算...

php微信小程序解包过程实例详解

1.找到小程序压缩包1.1、手机root或安装模拟器(我用的是夜神)1.2、在模拟器上安装微信(用android5系统的模拟器,低版本小程序容易打不开)1.3、打开登陆微信后,打开小程序1.4、打开模...

SublimeText3配置PHP函数追踪定位插件

一、下载ctagsdownload.csdn/detail/xujunabc999/9604934二、安装ctags和codeBeautifier插件:1)按Ctrl+shift+P,打开Instal...

GPU服务器有哪些用处?泉州GPU服务器有什么用途?

GPU服务器,简单来说,GPU服务器是基于GPU的应用于视频编解码、深度学习、科学计算等多种场景的快速、稳定、弹性的计算服务,我们提供和标准云服务器一致的管理方式。出色的图形处理能力和高性能计算能力提...

PHP中的异常及其处理机制

目录什么是异常?总结上回文章中我们讲到了错误是编译和语法运行时会出现的,它们与逻辑无关,是程序员在码代码时不应该出现的,也就是说,这些错误应该是尽量避免带到线上环境的,他们不能通过try...catc...