2014-01-15 2 views
0

Моя аутентификация пользователя сломалась после того, как я обновил Laravel до 4.1 из 4.0.Laravel 4: Пользователь не остался Записан В

Я следовал руководству по обновлению, предоставленному документацией.

Теперь, когда я вхожу в систему, он, кажется, длится только по одному запросу.

К примеру, в моем методе индекса HomeController, я заставляю логин следующим образом:

Auth::login(User::find(1), true); 
$user = Auth::user(); 
return View::make('layout', array('user' => $user)); 

Я присоединяюсь $ пользователя на макете и отображает информацию о пользователе отлично.

Однако, если я модифицирую контроллер, просто удалив первую строку, которая использует Auth для входа в систему, а затем обновит страницу, она пустая.

EDIT

Я использую Confide 3.1.0 для аутентификации пользователей и здесь есть функция do_login(). Я сделал штамп & дамп немедленно внутри первого «если», чтобы подтвердить, что Confide :: logAttempt возвращает true.

Я также полностью скрыл весь блок и просто сделал «echo Auth :: user()», и он действительно возвращает модель User для пользователя, с которым я только что вошел в систему.

public function do_login() 
{ 
    $input = array(
     'email' => Input::get('email'), // May be the username too 
     'username' => Input::get('email'), // so we have to pass both 
     'password' => Input::get('password'), 
     'remember' => Input::get('remember'), 
    ); 
    // If you wish to only allow login from confirmed users, call logAttempt 
    // with the second parameter as true. 
    // logAttempt will check if the 'email' perhaps is the username. 
    // Get the value from the config file instead of changing the controller 

    if (Confide::logAttempt($input, Config::get('confide::signup_confirm'))) 
    { 
     // Redirect the user to the URL they were trying to access before 
     // caught by the authentication filter IE Redirect::guest('user/login'). 
     // Otherwise fallback to '/' 
     // Fix pull #145 
     return Redirect::intended('/'); // change it to '/admin', '/dashboard' or something 
    } 
    else 
    { 
     $user = new User; 

     // Check if there was too many login attempts 
     if(Confide::isThrottled($input)) 
     { 
      $err_msg = Lang::get('confide::confide.alerts.too_many_attempts'); 
     } 
     elseif($user->checkUserExists($input) and ! $user->isConfirmed($input)) 
     { 
      $err_msg = Lang::get('confide::confide.alerts.not_confirmed'); 
     } 
     else 
     { 
      $err_msg = Lang::get('confide::confide.alerts.wrong_credentials'); 
     } 

        return Redirect::action('[email protected]') 
         ->withInput(Input::except('password')) 
      ->with('error', $err_msg); 
    } 

} 

Вот функция

public function logAttempt($credentials, $confirmed_only = false, $identity_columns = array()) 
{ 
    // If identity columns is not provided, use all columns of credentials 
    // except password and remember. 

    if(empty($identity_columns)) 
    { 
     $identity_columns = array_diff(
      array_keys($credentials), 
      array('password','remember') 
     ); 
    } 

    // Check for throttle limit then log-in 
    if(! $this->reachedThrottleLimit($credentials)) 
    { 
     $user = $this->repo->getUserByIdentity($credentials, $identity_columns); 

     if(
      $user && 
      ($user->confirmed || ! $confirmed_only) && 
      $this->app['hash']->check(
       $credentials['password'], 
       $user->password 
      ) 
     ) 
     { 
      $remember = isset($credentials['remember']) ? $credentials['remember'] : false; 

      $this->app['auth']->login($user, $remember); 
      return true; 
     } 
    } 

    $this->throttleCount($credentials); 

    return false; 
} 
+1

делить ваш код входа, где пользователь вошел в систему на первом месте – Anam

+0

У меня была такая же проблема, и это оказалось проблемой с панелью отладки Barryvdh - если вы используете эту панель отладки, то обновите ее до последней версии dev-master и он должен исправить проблему – glendaviesnz

+0

Спасибо glendaviesnz, но я не использую эту панель отладки. Был ли глобальный поиск моей кодовой базы просто абсолютно уверенным. – brianrhea

ответ

0

logAttempt() Мне очень жаль, чтобы сказать, что все, что я сделал, чтобы создать чистую установку Laravel, а затем скопировал контроллеры/модели/просмотров/Маршруты и т. Д. К новой установке, и она отлично работала.

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

Смежные вопросы