Php 如何在Laravel中使用另一个字段进行身份验证?
在手册中,我可以阅读: 默认情况下,Laravel使用电子邮件字段进行身份验证。如果您想自定义此项,您可以在Php 如何在Laravel中使用另一个字段进行身份验证?,php,laravel,authentication,Php,Laravel,Authentication,在手册中,我可以阅读: 默认情况下,Laravel使用电子邮件字段进行身份验证。如果您想自定义此项,您可以在LoginController 但是,在我的情况下,我想使用我的公司提供的unique\u id字段来验证我的用户。此字段不是用户名,因此我对使用username()方法获取此字段感到很遗憾。有没有其他方法可以告诉Laravel Authentication使用非电子邮件的东西来对我的用户进行身份验证?忽略该方法被称为username()的事实,然后使用它。您可以覆盖Auth/LoginC
LoginController
但是,在我的情况下,我想使用我的公司提供的
unique\u id
字段来验证我的用户。此字段不是用户名,因此我对使用username()
方法获取此字段感到很遗憾。有没有其他方法可以告诉Laravel Authentication使用非电子邮件
的东西来对我的用户进行身份验证?忽略该方法被称为username()
的事实,然后使用它。您可以覆盖Auth/LoginController中的验证登录
和凭证
方法
protected function validateLogin(Request $request)
{
$request->validate([
'unique_id' => 'required',
'password' => 'required|string',
]);
}
protected function credentials(Request $request)
{
return array_merge($request->only('unique_id', 'password'));
}
您可以在
App\Http\Controllers\Auth\LoginController::class
中覆盖username()
方法,如下所示:
/**
* Get the login username to be used by the controller
* You Username will be User $unique_id
*/
public function username()
{
return 'unique_id'
}
您的意思是对于
make:auth
?是的默认值您仍然定义username()
方法,您只需使其返回unique\u id
,而不是username
。如果不打算使用默认值,该方法只会告诉auth使用哪一列。是的,我同意username()
方法的名称很不幸,但这就是方法。但是如果我手动调用username
,我会得到一个混乱的结果,不是用户名,而是id。