2014-01-21 3 views
1

Auth :: попытка отлично работает, но когда вы проходите второй параметр «истинный», видимо, не волнует или не восстанавливается viaRememberviaRemember не работает - Laravel

viaRemember не работает, проверьте этот

контроллер пользователя

`$`userdata = array(
    'email'  => trim(Input::get('username')), 
    'password' => trim(Input::get('password')) 
); 

if(Auth::attempt(`$`userdata, true)){ 
    return Redirect::to('/dashboard'); 
} 

вид 'приборной панели', всегда показывать 777

@if (Auth::viaRemember()) 
    {{666}} 
@else 
    {{777}} 
@endif 

ответ

0

Кажется, что ваш проект находится на Laravel 4.0, но viaRemember() добавлен в Laravel 4.1! Так что это ожидалось.

+0

Версия 4.1.11 – jorgeluisgatica

+0

Ребята, я использую 4.1.22. Но это не работает. Пожалуйста посоветуй. – user2003356

0

в config\session.php сменить файл 'expire_on_close' = false на true, и как только вы закроете перезапуск своего браузера, все должно быть в порядке.

1

Я столкнулся с тем же препятствием, поэтому, глядя в код, можно видеть, что viaRemember не предназначен для использования в качестве функции для проверки того, был ли пользователь зарегистрирован в системе одним из способов, которыми может быть войдите в систему.

'viaRemember' предназначен для проверки того, был ли пользователь зарегистрирован в системе специально через файл cookie `viaRemember '.

Из того, что я понимаю, проверка подлинности пользователя запоминается двумя способами:

  1. via remember в печенье.

    Значение cookie сравнивается с полем via remember в таблице пользователей.

  2. сеанс 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().