热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

这篇文章主要介绍了laravel的用户修改密码与绑定邮箱的详细操作,本文给大家介绍的非常详细,对laravel修改密码与绑定邮箱的操作感兴趣的朋友一起看看吧

一、修改密码

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创建绑定邮箱的控制器:

在这里插入图片描述

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

<&#63;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:

在这里插入图片描述

写入:

<&#63;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]);
    }
}

在这里插入图片描述

创建发送邮件的模版:

在这里插入图片描述

模版写入:

邮箱验证码是:{{$code}}


验证码5分钟内有效,请及时使用!

2.4 测试效果

在这里插入图片描述

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

在这里插入图片描述

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

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


推荐阅读
  • 在寻找轻量级Ruby Web框架的过程中,您可能会遇到Sinatra和Ramaze。两者都以简洁、轻便著称,但它们之间存在一些关键区别。本文将探讨这些差异,并提供详细的分析,帮助您做出最佳选择。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • Django Token 认证详解与 HTTP 401、403 状态码的区别
    本文详细介绍了如何在 Django 中配置和使用 Token 认证,并解释了 HTTP 401 和 HTTP 403 状态码的区别。通过具体的代码示例,帮助开发者理解认证机制及权限控制。 ... [详细]
  • Hadoop发行版本选择指南:技术解析与应用实践
    本文详细介绍了Hadoop的不同发行版本及其特点,帮助读者根据实际需求选择最合适的Hadoop版本。内容涵盖Apache Hadoop、Cloudera CDH等主流版本的特性及应用场景。 ... [详细]
  • 本文详细介绍了在腾讯云服务器上配置 phpMyAdmin 的方法,包括安装、配置和解决常见问题。通过这些步骤,您可以轻松地在腾讯云环境中部署并使用 phpMyAdmin。 ... [详细]
  • 本文介绍如何使用 Angular 6 的 HttpClient 模块来获取 HTTP 响应头,包括代码示例和常见问题的解决方案。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 使用Nginx反向代理实现多域名端口映射
    本文介绍如何通过配置本地hosts文件和Nginx反向代理,实现多个虚拟域名的端口映射,使用户可以通过标准HTTP端口80访问不同后端服务。 ... [详细]
  • 本文详细介绍了在 Windows 7 系统中配置 Nginx 1.10.3 和 PHP 7.1.1 NTS 的步骤,包括修改 PHP 配置文件、处理依赖项以及创建批处理脚本启动和停止服务。重点解释了如何解决常见的运行时错误。 ... [详细]
  • 深入解析RDMA中的队列对(Queue Pair)
    本文将详细探讨RDMA架构中的关键组件——队列对(Queue Pair,简称QP),包括其基本概念、硬件与软件实现、QPC的作用、QPN的分配机制以及用户接口和状态机。通过这些内容,读者可以更全面地理解QP在RDMA通信中的重要性和工作原理。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
author-avatar
倪思慧1888
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有