Вход с помощью Laravel 5 не работает с Edge и Internet Explorer, хотя отлично работает в других браузерах.
Мы подозреваем, что это как-то связано с тем, что сессии не хранятся должным образом, но, честно говоря, мы понятия не имеем, что вызывает эту проблему.
Когда мы входим в систему с правильными деталями, логика входа в систему запускается и завершается должным образом, но после этого она просто перенаправляется обратно на страницу входа в систему, поэтому вполне вероятно, что промежуточное ПО считает, что пользователь не вошел в систему, и возвращает его на страницу входа. Вот почему мы думаем, что это как-то связано с сессиями.
Это наш скрипт входа в систему:
$rules = array('email' => 'required|email|min:3|max:60',
'password' => 'required|min:6|max:20');
$attributeNames = array(
'email' => strtolower(Lang::get('auth.email')),
'password' => strtolower(Lang::get('auth.password')),
);
$validator = Validator::make(Input::all(), $rules);
$validator->setAttributeNames($attributeNames);
if ($validator->fails()){ return Redirect::back()->withErrors($validator); die(); }
//Make an login attempt
$auth = Auth::attempt(array(
'email' => Input::get('email'),
'password' => Input::get('password'),
'role' => 'admin'
), false);
if(!$auth){
$auth2 = Auth::attempt(array(
'email' => Input::get('email'),
'password' => Input::get('password'),
'role' => 'user'
), false);
if(!$auth2){
return Redirect::back()->withErrors(Lang::get('auth.errorText'))->withInput(Input::all());
die();
}
}
//If user is not activated
if(Auth::User()->activated != 'OK'){
Auth::logout();
return Redirect::back()->withErrors(Lang::get('auth.notActivated'));
die();
}
if(Auth::User()->sms_verificatie == '1') {
$user = Auth::User();
$user->sms_ok = 0;
$user->save();
$sms_codes_verwijderen = UsersSMSLogin::where('id_cms_users','=',Auth::User()->id)->delete();
return Redirect::route('sms-verificatie');
die();
}
Session::forget('dashboard_werkgever');
return Redirect::route('dashboard');
Изменение имени файла cookie для удаления _ (подчеркивание) сработало для меня.
В app/config/session.php
изменено
'cookie' => 'laravel_session'
в
'cookie' => 'laravelsession'
Кажется, проблема связана с Google Analytics, мы удалили сценарий Analytics в Edge и Internet Explorer, и теперь все, кажется, работает нормально …
На всякий случай, если это кому-нибудь поможет, у меня недавно была очень похожая проблема. Оказывается, у меня было два веб-приложения в одном домене, использующих одно и то же имя файла cookie сеанса, и хотя некоторые браузеры отправляли правильный файл cookie (по чистой случайности, я полагаю), IE не было.
Урок из этого? Всегда меняйте значение по умолчанию laravel_session
имя печенья 🙂
Этот пост оказался полезным …
Как обрабатывать несколько файлов cookie с одним и тем же именем?