如何覆盖 Laravel 中的身份验证登录功能
How to override auth login function in Laravel
我需要覆盖 laravel 的默认登录功能,但是我对在那里找到的代码感到困惑。我不明白 laravel AuthenticatesUsers.php 如何验证用户存在于数据库中,然后对用户进行身份验证。
我在AuthenticatesUsers.php
中来过这个功能
/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(
$this->credentials($request), $request->filled('remember')
);
}
我想我需要在 auth/LoginController.php
中覆盖这个函数
但我不明白它是如何工作的。 guard()
和 attempt()
在哪里实施,我想真正的行动发生在那里。我需要为登录添加另一个条件。
有人了解 laravel 的默认登录方式吗?以及这两个函数 guard()
和 attempt()
,例如 attempt 并没有在 AuthenticatesUsers.php 内部实现,我相信我真的应该重写它的这个函数。
在哪里可以找到它的实现?
我建议不要覆盖任何函数,而是创建一个新的 guard
和 provider
。查看 config/auth.php
了解它们是如何定义的。
然后您可以将您的自定义防护设置为默认值,正常的身份验证流程将接管。
上的文档
我刚刚更改了 HomeController.php - 使用 'guest' 作为中间件而不是 'auth'。对于处于类似情况的任何人,这都是一个临时解决方案。
我需要覆盖 laravel 的默认登录功能,但是我对在那里找到的代码感到困惑。我不明白 laravel AuthenticatesUsers.php 如何验证用户存在于数据库中,然后对用户进行身份验证。
我在AuthenticatesUsers.php
中来过这个功能/**
* Attempt to log the user into the application.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function attemptLogin(Request $request)
{
return $this->guard()->attempt(
$this->credentials($request), $request->filled('remember')
);
}
我想我需要在 auth/LoginController.php
中覆盖这个函数但我不明白它是如何工作的。 guard()
和 attempt()
在哪里实施,我想真正的行动发生在那里。我需要为登录添加另一个条件。
有人了解 laravel 的默认登录方式吗?以及这两个函数 guard()
和 attempt()
,例如 attempt 并没有在 AuthenticatesUsers.php 内部实现,我相信我真的应该重写它的这个函数。
在哪里可以找到它的实现?
我建议不要覆盖任何函数,而是创建一个新的 guard
和 provider
。查看 config/auth.php
了解它们是如何定义的。
然后您可以将您的自定义防护设置为默认值,正常的身份验证流程将接管。
上的文档我刚刚更改了 HomeController.php - 使用 'guest' 作为中间件而不是 'auth'。对于处于类似情况的任何人,这都是一个临时解决方案。