2015-10-20 21 views
7

L'accesso con Laravel 5 non funziona con Edge e Internet Explorer, mentre funziona perfettamente bene con altri browser.Accesso a Laravel non funzionante in Edge e Internet Explorer

Sospettiamo che abbia qualcosa a che fare con le sessioni non memorizzate correttamente, ma per essere onesti non abbiamo idea di cosa causi questo problema.

Quando effettuiamo l'accesso con i dettagli corretti, la logica di accesso viene attivata e completata correttamente, ma dopo di che è appena reindirizzata alla pagina di accesso, quindi è probabile che il middleware pensi che l'utente non abbia effettuato l'accesso e li restituisca alla pagina di accesso, è per questo che pensiamo che abbia qualcosa a che fare con le sessioni.

Questo è il nostro script di accesso:

$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

Qual è il vostro errore \ problema? Sarà utile per capire meglio cosa sta succedendo esattamente. –

+0

Questa è la parte divertente, il browser sembra semplicemente ricaricare la pagina di accesso mentre ci siamo assicurati che la logica di login sia stata eseguita! – Moodles

+0

Dai un'occhiata a [questa domanda] (http://stackoverflow.com/questions/17297990/why-would-laravel-sessions-fail-in-just-safari-and-ie-after-switching-server). Potrebbe far luce un po ' –

risposta

1

Il problema sembra essere correlato a Google Analytics, abbiamo rimosso lo script Analytics Edge e internet exploder, e ora tutto sembra funzionare bene ...

3

Cambiare il nome del cookie per rimuovere _ (sottolineatura) ha funzionato per me.

In app/config/session.php cambiato

'cookie' => 'laravel_session'

a

'cookie' => 'laravelsession'

+0

hai salvato la mia giornata! –

+0

Anche questo ha risolto il mio problema. Dispari. –

0

Solo nel caso aiuta nessuno, recentemente ho avuto un problema molto simile. Risulta che ho avuto due applicazioni web sullo stesso dominio che condividono lo stesso nome di cookie di sessione e mentre alcuni browser inviavano il cookie giusto (per pura fortuna, suppongo), IE no.

Lezione da questo? Sostituire sempre il nome del cookie predefinito laravel_session :)

Questo post si è rivelato utile ... How to handle multiple cookies with the same name?

Problemi correlati