Я столкнулся с тем же препятствием, поэтому, глядя в код, можно видеть, что viaRemember
не предназначен для использования в качестве функции для проверки того, был ли пользователь зарегистрирован в системе одним из способов, которыми может быть войдите в систему.
'viaRemember' предназначен для проверки того, был ли пользователь зарегистрирован в системе специально через файл cookie `viaRemember '.
Из того, что я понимаю, проверка подлинности пользователя запоминается двумя способами:
via remember
в печенье.
Значение cookie сравнивается с полем via remember
в таблице пользователей.
сеанс cookie.
Значение cookie используется на сервере для получения сеанса из магазина сеансов . На объекте сеанса из магазина есть прикрепленные данные. Одним из элементов данных является идентификатор пользователя, подключенный к сеансу. В первый раз сеанс был создан, система привязывала идентификатор пользователя к данным сезона.
Illuminate\Auth\Guard
В классе:
public function user()
{
if ($this->loggedOut) return;
// If we have already retrieved the user for the current request we can just
// return it back immediately. We do not want to pull the user data every
// request into the method because that would tremendously slow an app.
if (! is_null($this->user))
{
return $this->user;
}
$id = $this->session->get($this->getName());
// First we will try to load the user using the identifier in the session if
// one exists. Otherwise we will check for a "remember me" cookie in this
// request, and if one exists, attempt to retrieve the user using that.
$user = null;
if (! is_null($id))
{
$user = $this->provider->retrieveByID($id);
}
// If the user is null, but we decrypt a "recaller" cookie we can attempt to
// pull the user data on that cookie which serves as a remember cookie on
// the application. Once we have a user we can return it to the caller.
$recaller = $this->getRecaller();
if (is_null($user) && ! is_null($recaller))
{
$user = $this->getUserByRecaller($recaller);
}
return $this->user = $user;
}
getUserByRecaller
функция вызывается только если аутентификация куки сессии не работает.
Флаг viaRemember
установлен только в функции getUserByRecaller
. Метод viaRemember
- это простой метод получения.
public function viaRemember()
{
return $this->viaRemember;
}
Таким образом, в конце концов, мы можем использовать Auth::check()
, что делает все проверки, включая viaRemember
проверки. Он вызывает функцию user()
в классе Guard.
Кажется, что и viaRemember
является индикатором. Вам нужно сделать тип Auth::check()
, и начнется процесс аутентификации, и вызывается функция user().
Версия 4.1.11 – jorgeluisgatica
Ребята, я использую 4.1.22. Но это не работает. Пожалуйста посоветуй. – user2003356