Я использую аутентификацию по умолчанию Laravel 5.2 и некоторые проблемы с поведением метода authenticated() структуры. Этот метод полезен для запуска кода после успешной проверки подлинности, но перед загрузкой последующих страниц. Успешная проверка подлинности будет вызывать метод проверки подлинности() в AuthController, который я определил следующим образом:Использование метода аутентификации Laravel 5.2
protected function authenticated() {
session(['loggedIn' => 'show']);
return redirect('/home');
}
Как мы видим, это может быть полезно для установки переменных сеанса, которые необходимы при стартовой первой загрузке вверх (но который не следует сбрасывать при каждом перезагрузке домашней страницы).
В моем случае я использую loggedIn для отображения определенного приветственного div только один раз за сеанс после входа пользователя в систему или регистрации. Я включил следующий PHP на главной странице для этого:
function displayWelcome() {
if (session('loggedIn') == 'show') {
echo '<div class="container" name="loggedIn" id="loggedIn">';
session(['loggedIn' => 'hide']);
} else {
echo '<div class="container" name="loggedIn" id="loggedIn" hidden>';
}
}
В настоящее время этот код прекрасно работает, когда существующие пользователи войти
Это, однако, не в полной мере работать для регистрации пользователей.. Он успешно перенаправляется на главную страницу, но приветственный div никогда не появляется вообще. Как ни странно, когда я эхо-сеанс ('loggedIn') до, вызывающий функцию displayWelcome(), он выводит «скрыть» после регистрации (и правильно отображает «show» после входа в систему). Я не вижу, как он приобретает значение «скрыть» и почему он неправильно открывает div.
Любые подсказки?
Спасибо. Это работает. Один последующий вопрос. У меня есть еще один код в authenticated(), который назначает другую переменную сеанса с именем shortName: $ id = \ Auth :: user() -> inst_id; $ instit = \ App \ Institution :: find ($ id); session (['shortName' => $ instit-> shortname]); Этот код отлично работает, не будучи помещенным в регистрационную функцию - он позволяет мне получить доступ к shortName на загруженной странице после регистрации. Вы знаете, почему я могу назначить переменную сеанса shortName в authenticated(), но не переменную сеанса loggedIn для регистрации? – Atlas
@Atlas Не уверен, не глядя на код, попробуйте обернуть часть $ instit = \ App \ Institution :: find ($ id) в блок catch try с помощью \ App \ Institution :: findOrFail ($ id) и catch \ Illuminate \ Database \ Eloquent \ ModelNotFoundException –