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

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

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

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 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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