手机号注册以后就不能再发送验证码了

发送短信验证码接口,如果手机号注册以后就不能再发送验证码了。

手机号注册以后就不能再发送验证码了

App\Http\Requests\Api\VerificationCodeRequest

这里面的 phoneunique:users 去掉是不是好一点,不然找回密码的时候怎么发送验证码。

...

    public function rules()
    {
        return [
            'phone' => [
                'required',
                'regex:/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$/',
                'unique:users'
            ]
        ];
    }
黑哈尔
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
liyu001989
最佳答案

注册和找回密码,逻辑处理流程都可以分开,所以应该使用不用的接口

5年前 评论
讨论数量: 3
黑哈尔

更改如下:

在用户注册接口传递 phone 参数

app\Http\Requests\Api\UserRequest.php 中增加验证

    ...
    public function rules()
    {
        return [
            'name' => 'required|between:3,25|regex:/^[A-Za-z0-9\-\_]+$/|unique:users,name',
            'password' => 'required|string|min:6',
            'verification_key' => 'required|string',
            'verification_code' => 'required|string',
            'phone' => [
                'required',
                'regex:/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\d{8}$/',
                'unique:users'
            ]
        ];
    }
    ...

app\Http\Controllers\Api\UsersController.php 验证 phone 与发送验证码接口提交的 phone 是否一致

       ...
        if (!hash_equals($verifyData['code'], $request->verification_code) or $verifyData['phone'] != $request->phone) {
            // 返回401
            return $this->response->errorUnauthorized('验证码错误');
        }
       ...
5年前 评论
liyu001989

注册和找回密码,逻辑处理流程都可以分开,所以应该使用不用的接口

5年前 评论
黑哈尔

@liyu001989 明白了,谢谢啦。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!