首页 > 解决方案 > 如何在 Laravel 6.12 中进行身份验证分类?

问题描述

我正在使用Authentication artisan 命令使用laravel 6.12

php artisan ui vue --auth

我一直在关注https://laraveldaily.com/auth-login-how-to-check-more-than-just-emailpassword/网站。我想知道通过分类(即公司、电子邮件地址和密码)进行身份验证所需的步骤。

当我添加公司名称时,我收到一个副本,它认为这是电子邮件地址。你在哪里改变这个?我收到以下错误。

BadMethodCallException 方法 App\Http\Controllers\Auth\LoginController::company 不存在。

$credentials = $request->only($this->username(), 'password'); $credentials = array_add($credentials, 'company'); 作为身份验证过程的一部分,我需要验证公司名称。带有电子邮件、密码和公司。有谁知道如何使用三个身份验证凭据进行身份验证?

use AuthenticatesUsers;

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = RouteServiceProvider::HOME;

/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('guest')->except('logout');
}

} '''

标签: laravelauthentication

解决方案



注意:您链接的教程显示了使用原始 SQL 查询登录用户的糟糕方法!。请使用更标准的方式。


要使用多个属性登录用户,请在 Controller 方法中执行以下操作:

public function login(Request $request)
{
    //... request validation logic

    //take only what is needed to verify login
    $credentials = request(['company', 'email', 'password']);

    //verify login
    if (!Auth::attempt($credentials)) {
        return response()->json([
            'message' => 'Invalid password'
        ], 401);
    }

    //Login user, as you're using Vue I assume you use either JWT or Passport

    $user = $request->user();
    $tokenResult = $user->createToken('Personal Access Token');
    $token = $tokenResult->token;
    $token->save();

    return response()->json([
        'access_token' => $tokenResult->accessToken,
        'token_type' => 'Bearer',
    ]);
}

推荐阅读