php - 在 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
由于文件夹内不再存在,如何在 Laravel 8 中同时使用用户名和密码登录Auth
?
解决方案
适用于 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'],
.....
]);
}
让我们享受认证。
推荐阅读
- c - 错误:“结构”之前的预期表达式
- emacs - Doom Emacs:Sly Vs。粘液问题
- linux - 根据 Unix 文件中的列查找重复行
- java - Android kotlin 上的 Retrofit Post 不工作,但在 postman 上工作
- node.js - 具有多个连接的 Mongoose 打字稿模型创建
- blockchain - 我们可以限制 Corda 中的帐户只接受一个特定的状态吗?
- python-3.x - 多处理池中的 Boto3 客户端因“botocore.exceptions.NoCredentialsError:无法找到凭据”而失败
- c++ - 中文时钟问题c++(给我时间限制错误)
- javascript - React-redux:更新数组中的值
- hubspot - 将文件上传到 hubspot 中的交易