当前位置: 首页 > 知识库问答 >
问题:

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

姜华翰
2023-03-14

我最近开始使用Laravel 8,我正在尝试使用用户名和电子邮件一起登录,但我不知道如何做到这一点。在拉腊维尔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,
    ];
}

如何在Laravel 8中使用用户名和密码登录,因为Auth文件夹中不再有LoginController

共有3个答案

南宫才英
2023-03-14

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

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留档和一个快速教程。

令狐声
2023-03-14

这是我的代码,您可以使用您的用户名或电子邮件登录,并且可以在验证部分使用正则表达式来完成。

public function login() {
    $credentials = $this->validate();
    
    if(auth()->attempt(array('email' => $this->email, 'password' => $this->password), $this->remember_me) ||
         auth()->attempt(array('username' => $this->email, 'password' => $this->password), $this->remember_me)) {
        $user = User::where(["email" => $this->email])
            ->orWhere(["username" => $this->email])
        ->first();
        auth()->login($user, $this->remember_me);
        return redirect()->intended('/dashboard');        
    }
    else{
        return $this->addError('email', trans('auth.failed')); 
    }
}
端木朝
2023-03-14

Laravel Jetstream的解决方案

您可以按照以下步骤使用用户名或电子邮件进行身份验证。

1.确认登录输入字段名(让name为标识

2.更改配置/加固。php

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

3.在您的应用程序/提供商/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.在寄存器中添加输入。刀身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.在用户模型中添加用户名$filleble数组列表。

3.app/Actions/Fortify/CreateNewUser中的最后更改。php文件

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

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

让我们享受身份验证。

 类似资料:
  • 客户已创建密钥存储库并存储凭据。为了验证密钥存储库,我已经在节点中创建了应用程序,并使用客户端id和客户端机密,我能够读取机密。但是现在客户不想使用客户id和客户机密,而是使用AZURE的用户名和密码来访问程序中的keyvault。它是一个没有MFA的keyvault访问的专用用户。 我不确定我们是否可以从节点JS使用用户名和密码访问keyvault。敬请建议。 谢谢

  • 是否可以在Flatter中使用用户名和密码(而不是电子邮件和密码)实现Firebase身份验证?有没有办法用Firebase Auth插件来实现这一点?

  • 我有一个用户名和密码,我怎么用他们来验证库贝特尔? 我要运行哪个命令? 我已经通读了https://kubernetes.io/docs/reference/access-authn-authz/authorization/和https://kubernetes.io/docs/reference/access-authn-authz/authorization/,但在其中找不到任何与本例相关的信

  • 我想知道是否有能力登录与电子邮件和用户id+密码,我有一个项目,我想让用户添加一个唯一的号码(实际上是我们公司提供的工作识别号码),以能够登录到该计划将保持私人公司就业。 我需要firebase认证拒绝登录,即使电子邮件和密码是正确的,但用户id是错误的。

  • 我正在使用生成用户密码的强哈希值。我想登录用户,但不想通过网络以明文形式发送密码,如何检查密码是否正确(没有往返),因为它是加盐的? 我有一个客户端/服务器场景。客户端是台式计算机上的应用程序(不是网站,也不是超文本传输协议服务器)。 我怎样才能做到这一点?我只是走了这么远:我正在客户端上生成salt散列,从中形成一个mcf并将其发送到我的服务器。将mcf保存到数据库。我没有发送密码,只发送了实际

  • 问题内容: 目前,我正在使用Spring Security编写Web应用程序。我们有一个通过用户名和密码对用户进行身份验证的Web服务。 网络服务: 如何配置Spring Security将提供的用户名和密码传递给Web服务? 我写了一个仅接收用户名的。 我认为问题出在您的xml中。您是否关闭了自动配置?并且您的类是否扩展AbstractUserDetailsAuthenticationProvi