Laravel 4 Auth работает, но не остается в системе

#php #laravel #laravel-4

#php #laravel #laravel-4

Вопрос:

В моем приложении Laravel 4 я использую функцию аутентификации.

Я отправляю свою форму входа в:

 $data = array(
'email'     => Input::get('email'),
'password'  => Input::get('password')
);

if (Auth::attempt($data)) {
    echo 'SUCCESS!';
} 
 

Это приводит к УСПЕХУ, следовательно, все работает. Но если я в следующий раз вызову другой метод, пользователь не войдет в систему:

 if (Auth::check()) {
echo "logged in";
}
else {
echo "not logged in";
}
 

Это выводит «не вошел в систему». Я попытался добавить true для попытки запомнить логин, но это не имеет значения. У меня есть еще одно приложение Laravel с запущенной авторизацией, которое работает отлично.

Есть идеи, в чем может быть причина?

Комментарии:

1. Убедитесь, что конфигурация вашего сеанса является точной, файлы cookie сохраняются в правильном домене и т.д.

Ответ №1:

1. Сначала выполните аутентификацию с помощью :

      if (Auth::attempt($data)) {
  return Redirect::to('admin'); 
}
 

2. Затем поместите эту проверку на страницу, на которую вы перенаправили своего пользователя после успешной аутентификации
В этом случае скажите «admin».

  if (Auth::check()) {
    echo "process";
    }
    else {
    return Redirect::to('login');
    }
 

Комментарии:

1. Это помогло. Но причина странная. Я отправляю сообщение в качестве ответа.

2. Насколько я знаю, вы успешно прошли аутентификацию с Auth::attempt($data) помощью , в то время Auth::check() как проверяет СЕАНС , где, поскольку СЕАНС еще не был установлен, поскольку вы разместили код сразу после AUTH::attempt .. 🙂 ? Понял. Если вы удовлетворены ответом , пожалуйста , отметьте его как отмеченный .

Ответ №2:

Я нашел решение. Может быть, это поможет другим:

После вызова Auth:attempt вы ничего не должны echo . У вас есть do для a redirect . Для меня это не имеет смысла, но решило проблему.

Ответ №3:

 Event::listen('auth.login', function($user)
{
    echo 'user logged in'; 
});
 

Поместите это после Auth::attempt($data) и проверьте.

Комментарии:

1. Вы хотите перенаправить пользователя на какую-либо конкретную страницу после успешной попытки входа в систему или остаться на той же странице. ?

2. Перенаправление на другую страницу. Это вход в веб-приложение со многими страницами.

3. Тогда вы должны сделать это следующим образом, если (Auth::attempt($data)) { return Redirect::to(‘admin’); } // скажем, admin или куда угодно, куда вы хотите отправить аутентифицированного пользователя