我正在使用Laravel Auth来允许人们登录。
现在我有一个数据库,人们可以在其中多次存在(对于较新的事件)
所以我想知道是否可以调整身份验证查询以检查最新的电子邮件地址,因此获取数据库中具有最高 ID 的电子邮件和密码组合
我似乎在照明结构的任何地方都找不到查询。我在这里找错地方了吗?
Class guard {
似乎具有登录人员的功能。谢谢!
可以通过重写身份验证驱动程序。
创建自定义驱动程序: 1. 创建一个实现UserProviderInterface
的新类 2. 在 app/start/global.php
中添加以下内容注册您的身份验证驱动程序:
Auth::extend('auth.mydriver', function($app)
{
return new MyApp'Extensions'MyAuthDriver;
});
- 告诉配置在
app/config/auth.php
中查找驱动程序并更改'driver' => 'auth.mydriver',
现在Laravel使用你的身份验证实现。 首先,我将复制原始代码并更改要提供自定义实现的方法
编辑:
如果您查看尝试如何工作,如果正常验证失败,它会调用 retrieveByCredentials。如果你想覆盖 Guard 的方式,你必须创建自己的 Guard 类并使用而不是默认的 ( app/config/app.php
)
/**
* Attempt to authenticate a user using the given credentials.
*
* @param array $credentials
* @param bool $remember
* @param bool $login
* @return bool
*/
public function attempt(array $credentials = array(), $remember = false, $login = true)
{
$this->fireAttemptEvent($credentials, $remember, $login);
$this->lastAttempted = $user = $this->provider->retrieveByCredentials($credentials);
// If an implementation of UserInterface was returned, we'll ask the provider
// to validate the user against the given credentials, and if they are in
// fact valid we'll log the users into the application and return true.
if ($this->hasValidCredentials($user, $credentials))
{
if ($login) $this->login($user, $remember);
return true;
}
return false;
}