首页后端开发PHP详解laravel的用户修改密码的操作

详解laravel的用户修改密码的操作

时间2024-03-26 17:48:03发布访客分类PHP浏览1152
导读:修改密码的功能是比较常遇到的需求,本文就给大家来分享一下laravel的用户修改密码的操作?下文示例对大家学习或者工作有一定的帮助,另外还分享了绑定邮箱的操作,感兴趣的朋友也可以了解看看。 一、修改密码 1.1 创建修改密码控制器...

修改密码的功能是比较常遇到的需求,本文就给大家来分享一下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创建绑定邮箱的控制器:

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

?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:

写入:

?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的用户修改密码的操作就介绍到这,本文的绑定邮箱的操作也值得参考,感兴趣的朋友可以参考了解看看,希望对大家有帮助,想要了解更多大家可以关注其它的相关文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 详解laravel的用户修改密码的操作
本文地址: https://pptw.com/jishu/653659.html
JavaScript函数相关基础操作及实例有哪些 用Go语言如何模拟openssl生成证书的流程

游客 回复需填写必要信息