1

我最近开始使用 Laravel 8,我正在尝试同时使用用户名和电子邮件登录,但我不知道该怎么做。在 Laravel 7 中,我可以使用...

protected function credentials(Request $request)
{
    $field = filter_var($request->get($this->username()), FILTER_VALIDATE_EMAIL)
        ? $this->username()
        : 'username';
    
    return [
        $field => $request->get($this->username()),
        'password' => $request->password,
    ];
}

LoginController由于文件夹内不再存在,如何在 Laravel 8 中同时使用用户名和密码登录Auth

4

2 回答 2

6

适用于 Laravel-Jetstream 的解决方案

username or email您可以按照以下步骤进行身份验证。

1.确认登录输入字段名称(Let name is identity

2.改变config/fortify.php

'username' => 'email' to  'username' => 'identity'

3.在boot方法app/Providers/FortifyServiceProvider.php里面的文件中添加了以下验证码

Fortify::authenticateUsing(function (LoginRequest $request) {
            $user = User::where('email', $request->identity)
                ->orWhere('username', $request->identity)->first();

            if (
                $user &&
                \Hash::check($request->password, $user->password)
            ) {
                return $user;
            }
        });

[注意] 请使用那些类

use Laravel\Fortify\Http\Requests\LoginRequest;
use App\Models\User;

#用于注册用户名

1.在你的添加输入register.blade.php

<div class="mt-4">
            <x-jet-label for="username" value="{{ __('User Name') }}" />
            <x-jet-input id="username" class="block mt-1 w-full" type="text" name="username" :value="old('username')" required autofocus autocomplete="username" />
</div>

2.添加username用户模型$fillable数组列表。

3.最后修改app/Actions/Fortify/CreateNewUser.php文件

Validator::make($input, [
            ..........
            'username' => ['required', 'string', 'max:255', 'unique:users'],
            .........
        ])->validate();

        return User::create([
           .......
            'username' => $input['username'],
            .....
        ]);
    }

让我们享受认证。

于 2020-10-07T04:01:53.013 回答
0

Laravel Jetstream(适用于 Laravel 8)取代了之前 Laravel 版本中可用的 Laravel 身份验证 UI。这意味着,对于您想要的身份验证功能,您必须安装和使用 Jetstream。要使用 composer 安装 Jetstream,请运行以下命令

composer require laravel/jetstream
php artisan jetstream:install

然后,根据您要使用 Livewire 还是 Inertia,运行以下两个命令之一:

php artisan jetstream:install livewire

或者

php artisan jetstream:install inertia

之后,然后运行

npm install && npm run dev
php artisan migrate

Jetstream 已准备好使用。

这是Jetstream 文档快速教程

于 2020-09-17T17:03:19.730 回答