在Laravel 8中使用用户名和密码进行身份验证时出现问题

问题描述

我最近开始使用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文件夹中不再有Auth,如何在Laravel 8中同时使用用户名和密码登录?

解决方法

适用于Laravel-Jetstream的解决方案

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

1。。确认登录输入字段名称(名称为identity

2。。更改config/fortify.php

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

3。。在您的app/Providers/FortifyServiceProvider.php文件的 boot 方法

中添加了以下身份验证代码
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'],.....
        ]);
    }

让我们享受认证。

,

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 documentationquick tutorial

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...