【问题标题】:Authenticate users without email in Laravel在 Laravel 中验证没有电子邮件的用户
【发布时间】:2017-05-18 02:21:05
【问题描述】:

我正在尝试在用户注册时将电子邮件设为可选。这里是package。所以我在这个函数中删除了email' => 'required|email|unique:users',

public function signup(Request $request)
{
    $credentials = $request->all();
    $validator = Validator::make($credentials, [
        'name' => 'required',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:6|confirmed',
        'password_confirmation' => 'required|min:3'
    ]);
    if ($validator->fails()) {
        throw new ValidationHttpException($validator->errors()->all());
    }
    try {
        $user = $this->users->create($request->except('roles', 'permissions'));
        if (!$user->id) {
            return $this->response->error('could_not_create_user', 500);
        }

        $hasToReleaseToken = Config::get('boilerplate.signup_token_release');
        if ($hasToReleaseToken) {
            return $this->login($request);

        }

        return $this->response->created();
    } catch (\Exception $e) {
        return $this->response->error($e->getMessage(), 500);
    }

}

然后在 config-boilerplate.php 我还删除了电子邮件:

'signup_fields_rules' => [
    'name' => 'required',  
    'email' => 'required|email|unique:users',///// this
    'password' => 'required|min:6'
],

但是当我注册时,我得到了这个错误:

"message": "未定义索引:电子邮件", “状态码”:500, “调试”:{ “线”:173, “文件”:“/Users/MyMac/Desktop/Project/laravel-5.3-boilerplate-api-jwt-vue2/vendor/dingo/api/src/Http/Response/Factory.php”, "class": "Symfony\Component\HttpKernel\Exception\HttpException",

路线:

$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->post('auth/signup', 'App\Api\V1\Controllers\AuthController@signup');

我需要禁用什么来允许用户使用或不使用电子邮件进行注册吗?

【问题讨论】:

标签: php laravel authentication jwt dingo-api


【解决方案1】:

如果您想将电子邮件作为可选字段,只需使用sometimes|email 参见Docs。试试下面的代码:

public function signup(Request $request)
{
    $credentials = $request->all();
    $validator = Validator::make($credentials, [
        'name' => 'required',
        'email' => 'sometimes|email',
        'password' => 'required|min:6|confirmed',
        'password_confirmation' => 'required|min:3'
    ]);
    if ($validator->fails()) {
        throw new ValidationHttpException($validator->errors()->all());
    }
    try {
        $user = $this->users->create($request->except('roles', 'permissions'));
        if (!$user->id) {
            return $this->response->error('could_not_create_user', 500);
        }

        $hasToReleaseToken = Config::get('boilerplate.signup_token_release');
        if ($hasToReleaseToken) {
            return $this->login($request);

        }

        return $this->response->created();
    } catch (\Exception $e) {
        return $this->response->error($e->getMessage(), 500);
    }

}

config-boilerplate.php

'signup_fields_rules' => [
    'name' => 'required',  
    'email' => 'sometimes|email',///// this
    'password' => 'required|min:6'
],

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-28
    • 2020-03-18
    • 1970-01-01
    • 2022-11-12
    • 2021-12-13
    • 2019-02-12
    • 2021-02-15
    • 2017-06-23
    相关资源
    最近更新 更多