Я сделал это в предыдущих проектах, используя Sentry 2, но я не могу заставить его работать со встроенной функцией Auth.
Способ хранения пользователей:
public function store() { $validation = new Services\Validators\User; if ($validation->passesForStore()) { // Create a new user $user = new User; $user->name = Input::get('name'); $user->password = Input::get('password'); $user->email = Input::get('email'); $user->save(); // Authenticate the user Auth::loginUsingId($user->id); return JSend::success([ 'redirect' => URL::action('VaultController@index') ]); } // Provide a custom message for an e-mailaddress that's already in use $message = ''; if ($validation->hasFailed('email', 'unique')) { $message = 'This e-mailaddress has already been taken'; } return JSend::fail([ 'failed' => $validation->failedFields(), 'message' => $message ]); }
Обработчик ответа AJAX:
// Redirect to given URL if (typeof response.data.redirect != 'undefined') { window.location = response.data.redirect; }
Пользователь успешно создан, установив Auth::check();
сразу после того, как loginUsingId
true
но как только страница перенаправляется с помощью window.location
, Auth::check()
loginUsingId
false, и пользователь не вошел в систему, даже когда вы вручную переходите на другую страницу.
Настройки App.session:
'lifetime' => 120, 'expire_on_close' => true,
Не забывайте, что метод входа работает аналогичным образом, но не работает! (он работает без использования AJAX)
=== UPDATE ===
Жизнь просто стала немного страннее. Теперь я могу войти в систему, используя мои методы регистрации и регистрации. Что изменилось? Я добавил псевдоним vhost для моего прежнего проекта localhost, и вход в систему, казалось, работал нормально. (Звучит для меня как проблема с окружающей средой?).
Однако, что не работает, выходит из системы. Для тестовых целей я создал следующий маршрут:
Route::get('logout', function(){ Auth::logout(); Session::flush(); dd(Auth::check()); });
изRoute::get('logout', function(){ Auth::logout(); Session::flush(); dd(Auth::check()); });
Результат, как и ожидалось, будет false
. Однако! Если я перейду на страницу входа в систему, я буду перенаправлен. Посещение моего другого маршрута отладки ниже результатов в true
что абсолютно не имеет смысла. Пользователь не был зарегистрирован, используя флаг «запомнить».
Route::get('authenticated', function(){ dd(Auth::check()); });
В этот момент очень приветствуется любой вход 🙂
=== ОБНОВЛЕНИЕ 2 ===
Кажется, предыдущая успешная попытка была просто случайностью. Вход в систему или выход из системы после того, как я вручную вошел в систему, не работает. Любой способ отладить эту черную магию?
=== ОБНОВЛЕНИЕ 3 ===
Сегодня я попробовал свое приложение еще раз и был представлен не могу записать в файл xxxx ошибку. Я проверил папку хранения / сеансов и обнаружил, что такого файла не существует.
Я опустошил папку хранения / сеансов, очистил весь кеш, и странно, что у меня были проблемы с регистрацией и выходом из системы.
Несмотря на то, что основная проблема решена (на данный момент), я все равно хотел бы узнать, что вызвало эту проблему в первую очередь
Ответ на этот вопрос можно найти в аналогичной должности, спасибо @Razor!
laravel 4 постоянных данных – jquery ajax submit