我使用Laravel Auth允许人们登录。
现在我有一个数据库,人们可以多次存在(对于较新的事件)
我似乎无法在Illuminate Structure中的任何地方找到查询..我在这里找错了地方吗?
Class guard {
似乎具有记录人员的功能。 谢谢!
答案 0 :(得分:1)
您可以通过覆盖Auth驱动程序。
要创建自定义驱动程序:
1.创建一个实现UserProviderInterface
的新类
2.在app/start/global.php
中注册您的auth驱动程序,添加以下内容:
Auth::extend('auth.mydriver', function($app)
{
return new MyApp\Extensions\MyAuthDriver;
});
app/config/auth.php
中查找您的驱动程序并更改'driver' => 'auth.mydriver',
现在Laravel使用您的Auth实现。开始时我会复制原始代码并更改您想要提供自定义实现的方法
编辑:
如果您查看尝试工作的方式,如果正常验证失败,则会调用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;
}