首页 > 解决方案 > Laravel 7.x 使用电话登录,而不是使用使用尝试登录()方法的自定义登录的电子邮件

问题描述

我一直在使用我的 loginController 中的尝试登录()来使用自定义身份验证系统。现在,我想使用电话而不是电子邮件登录。我已经尝试在返回电话列字段的控制器中覆盖 username() 方法。但是,将其与 tryLogin() 一起使用似乎不起作用。我的 loginController 在下面给出

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use App\User;
use Auth;

class LoginController extends Controller
{
    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');
    }

    public function showLoginForm()
    {
        // Get URLs
        $urlPrevious = url()->previous();
        $urlBase = url()->to('/');

        // Set the previous url that we came from to redirect to after successful login but only if is internal
        if(($urlPrevious != $urlBase . '/login') && (substr($urlPrevious, 0, strlen($urlBase)) === $urlBase)) {
            session()->put('url.intended', $urlPrevious);
        }

        return view('auth.login');
    }
    public function username()
    {
        return 'PHONE';
    }

    protected function attemptLogin(Request $request)
    {

        $user = User::where('PHONE', $request->phone)
                    ->where('PASSWORD', $request->password)
                    ->first();
        //dd($user);

        if(!isset($user)){
            return false;
        }

        return    Auth::login($user);
    }

}

标签: phplaravelauthentication

解决方案


推荐阅读