如何解决在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已准备就绪,可以使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。