#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 или куда угодно, куда вы хотите отправить аутентифицированного пользователя