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

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

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 domdocument找不到的问题

具体问题:php - 找不到 'DOMDocument'类我在Magento应用程序的页面上发现错误;当我访问它时,它总是显示此消息错误:Fatal error: Class '...

php判断数组元素不为空格实例代码

1、使用foreach ($arr as $value){}语句遍历数组。2、使用if($value!=" ")语句判断数组元素是否为空格。3、如果数组元素全部不为空,则输出数组元...

详解PHP八大设计模式

PHP命名空间可以更好地组织代码,与Java中的包类似。Test1.php<?phpnamespace Test1;//命名空间Test1function test(){echo __FILE_...

ajax的核心(ajax和json的区别)

ajax的核心是什么ajax的核心是数据获取技能“XMLHttpRequest”,它是JavaScript的一个目标。经过XMLHttpRequest可在不改写页面的情况下恳求特定URL,获取数据,让...

济南高防服务器有效抵御DDOS流量攻击

济南高防服务器有效抵御DDOS流量攻击?济南高防服务器可以通过以下几种方式来有效抵御DDoS流量攻击:流量清洗:流量清洗是一种有效的DDoS防御技术,可以对流量进行过滤,剔除恶意流量,保留正常流量。可...

php将ppt转jpg图片的具体步骤代码

PHP将ppt转成图片查看PHP安装COM组件1、如php版本>5.3.15,需要保证ext文件夹下有php_com_dotnet.dell 并在php.ini中加入。extension=php...