Per impostazione predefinita, Laravel imposta secure e/o httponly per i cookie di autenticazione e di sessione. Non riuscivo a trovare un modo per cambiare questo nella configurazione, e infatti in laravel 4,0 (questo non è più il caso), il HttpOnly è difficile codificato come un ambiente in vendor/laravel/framework/src/Illuminate/Session/SessionManager.php
Nota che non si deve perdere i cookie da Da HTTPS a HTTP, perché ti impedisce di mantenere le sessioni sicure (potrei comunque annusare una sessione da un altro utente sulla mia rete che ha effettuato l'accesso al tuo sito Web, ad esempio).
laravel 4.1+
Modifica app/config/session.php
. Modificare la chiave 'secure'
su false se si desidera che i cookie impostati su https vengano letti anche su http.
In alternativa, seguire il consiglio di @ martinstoeckli e impostare la chiave in base al valore dell'ambiente.
laravel 4.0
Forse il modo migliore per attuare questo sarebbe per sostituire CookieSessionHandler
con il proprio gestore.
Ad esempio, è possibile creare una nuova classe che estenda CookieSessionHandler con una funzione di scrittura aggiornata che contrassegna tutti i cookie come non validi solo per https/http.
Class NewCookieSessionHandler extends CookieSessionHandler implements \SessionHandlerInterface {
/**
* {@inheritDoc}
*/
public function write($sessionId, $data)
{
// $this->cookie is \Illuminate\Cookie\CookieJar
$this->setCookie($this->cookie->make($sessionId, $data, $this->minutes, '/', false, false));
}
/**
* Set the given cookie in the headers.
*
* @param \Symfony\Component\HttpFoundation\Cookie $cookie
* @return void
*/
protected function setCookie($cookie)
{
if (headers_sent()) return;
setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), false, false);
}
}
Poi dentro app/config/session.php
è possibile modificare il driver per NewCookie
e, infine, all'interno app/start/global.php
registrare il nuovo driver di cookie che sostituisce l'impostazione del biscotto
use Illuminate\Cache\Repository;
Cookie::extend('NewCookie', function($app)
{
return new NewCookieSessionHandler;
});
In app/config/session.php 'secure' => false '? L'hai modificato? –
Il mio file di configurazione non ha nulla di simile. Tuttavia, ci proverò. – Anam
@pleasedeleteme non funziona. – Anam