2012-09-15 13 views
5

Ho letto questo post precedente: Generally splitting admin and web app into two entitiesCome gestire l'inizio della sessione in CakePHP durante la creazione di un'API REST?

In sostanza l'essenza di esso è che siamo in grado di coniugare il lato api delle cose e la parte anteriore web di cose insieme in un'unica applicazione CakePHP. Tuttavia, come sapete, REST è senza stato e non c'è motivo di aspettarsi che il client conservi un cookie o qualcosa del genere. Ragazzi, sapete esattamente quando si attiva la funzione session_start in CakePHP? Voglio davvero evitare il session_start in esecuzione quando vengono colpiti i punti finali dell'API. Tuttavia, avrò bisogno della sessione per iniziare quando vengono colpiti i miei normali web front.

+0

Vedere sotto URL Penso che sia di grande aiuto per tu. ** Sviluppo di applicazioni web RESTful in cakephp ** http://bakery.cakephp.org/articles/rightwayindia/2010/01/11/restful-web-application-development-in-cakephp http://book.cakephp.org /1.3/view/924/The-Configuration-Class –

risposta

0

session_start() viene attivato in CORE\Cake\Model\Datasource\CakeSession.php. se non si desidera attivare session_start(), assicurarsi di non includere il componente di sessione o l'helper nel controller. Inoltre, assicurati di non chiamare la sessione o di utilizzare il componente Auth, poiché in alcuni casi può anche attivare automagicamente lo session_start().

1

Per la torta v2 +, in generale fanno non eseguire una delle seguenti operazioni:

  • effettuare chiamate a CakeSession componente sessione
  • carico o utilizzare sessione aiutante
  • rimuovere $ this-> session- > flash() dal layout
  • dont componente uso di autenticazione

Se siete stil l avvio delle sessioni (posso dire ottenendo un cookie nell'intestazione della risposta), è facile rintracciare chi sta iniziando la sessione. Basta aggiungere le seguenti righe lib/Cake/Model/Datasource/CakeSession.php nel metodo start():

public static function start() { 
    debug_print_backtrace(); 
    exit(); 
    ... 
} 

fare una richiesta e vedrete uno stack di chiamate di chi è il colpevole era :)

+0

Un grande consiglio su debug_print_backtrace() in CakeSession :: start - è un grande aiuto! – BeesonBison

Problemi correlati