2015-10-20 13 views
7

Logowanie przy użyciu Laravel 5 nie działa z Edge i Internet Explorer, a działa doskonale w innych przeglądarkach.Logowanie Laravel nie działa w przeglądarce krawędzi i Internetu

Podejrzewamy, że ma to coś wspólnego z tym, że sesje nie są prawidłowo przechowywane, ale szczerze mówiąc nie mamy pojęcia, co powoduje ten problem.

Kiedy logujemy się z odpowiednimi szczegółami, logika logowania jest uruchamiana i poprawnie uruchamiana, ale po tym jest przekierowywana z powrotem na stronę logowania, więc prawdopodobnie oprogramowanie pośredniczące uważa, że ​​użytkownik nie jest zalogowany i zwraca je na stronie logowania, dlatego uważamy, że ma to coś wspólnego z sesjami.

To jest nasz skrypt logowania:

$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'); 
+0

Jaki jest Twój błąd \ problem? Przydałoby się lepiej zrozumieć, co dokładnie się dzieje. –

+0

To zabawna część, przeglądarka po prostu wydaje się przeładować stronę logowania, podczas gdy upewniliśmy się, że logika logowania jest wykonywana! – Moodles

+0

Spójrz na [to pytanie] (http://stackoverflow.com/questions/17297990/why-would-laravel-sessions-fail-in-just-safari-and-ie-after-switching-server). Może rzucić trochę światła –

Odpowiedz

1

Problem wydaje się być związane z Google Analytics, usunęliśmy skrypt Analytics w Edge i internet Exploder, a teraz wszystko wydaje się działać prawidłowo ...

3

Zmiana nazwy pliku cookie w celu usunięcia _ (podkreślenia), która zadziałała.

W app/config/session.php zmienił

'cookie' => 'laravel_session'

do

'cookie' => 'laravelsession'

+0

uratowałeś mój dzień! –

+0

To również rozwiązało mój problem. Dziwny. –

0

wszelki wypadek pomaga nikomu, ja niedawno miał bardzo podobny problem. Okazuje się, że miałem dwie aplikacje internetowe w tej samej domenie, które dzieliły tę samą nazwę pliku cookie sesji i podczas gdy niektóre przeglądarki wysyłały odpowiedni plik cookie (przez zwykłe szczęście), IE nie było.

Lekcja od tego? Zawsze zmienić nazwę pliku cookie domyślny laravel_session :)

Ten post okazał się przydatny ... How to handle multiple cookies with the same name?

Powiązane problemy