Php Laravel 7.x使用电话而不是电子邮件登录,自定义登录使用attemptLogin()方法
我一直在使用loginController中的attemptLogin()自定义身份验证系统。现在,我想用电话而不是电子邮件登录。我已尝试重写控制器中返回手机列字段的username()方法。但是,将其与attemptLogin()一起使用似乎不起作用。下面给出了我的loginControllerPhp Laravel 7.x使用电话而不是电子邮件登录,自定义登录使用attemptLogin()方法,php,laravel,authentication,Php,Laravel,Authentication,我一直在使用loginController中的attemptLogin()自定义身份验证系统。现在,我想用电话而不是电子邮件登录。我已尝试重写控制器中返回手机列字段的username()方法。但是,将其与attemptLogin()一起使用似乎不起作用。下面给出了我的loginController <?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Provide
<?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);
}
}
您应该在您的用户模型中重写username()
函数。您的数据库中有纯文本密码吗?是的,我有一个特定用例的纯密码,这就是为什么我必须自定义login@lagboxOverriding username at model对我@Surajit似乎不起作用