Non riesco a far funzionare bene l’ autologin. Ho settato autologin = true e gestito il campo remeber me in modo da inserire un secondo parametro >0 nel login:
Yii::app()->user->login($this->_identity,$duration); (duration è 3600*24*30).
Risultato: se chiudo il browser e lo riapro mi fa autologin un paio di volte, poi dopo qualche volta mi chiede user e password. Il cookie è ancora presente, ma apparentemente non viene rilevato.
EDIT: Ho verificato che il cookie viene regolarmente caricato, ma quando cerca di fare il restore dell’ identità dal cookie non passa il controllo del Security Manager. Eppure il cookie non è stato modificato!
EDIT: Il controllo di sicurezza non passa perchè il cookie è encoded, e quando viene caricato il deencoding lo rende così:
69a99dccf2ff865d04d7e253e0fba900ccd4cc78a:4:{i:0;s:2:\"11\";i:1;s:23:\"leopoldo.vaghi@alice.it\";i:2;i:2592000;i:3;a:0:{}}
con lo slash davanti al doppio apice. Se si elimina lo slash il conrollo di sicurezza passa.
Perciò ho trovato questo bypass: ho aggiunto a riga 304 in CSecuritymanager.php la riga:
$data2=stripslashes($data2);
e tutto funziona.
A questo punto ho osservato che il problema si presenta solo quando utilizzo Yii integrato con wordpress secondo il metodo inicato in questo articolo:
Evidentemente la presenza del codice do wordpress cambia il modo fare il deencoding dei cookies. Forse viene settato qualche parametro di inizializzazione del php, manon sono riuscito a identificarlo (se qualcuno mi aiuta gli sarò grato).
P.S. Non c’ entra, ma ci tengo a segnalare che l’ integrazione di Yii con wordpress è semplicemente formidabile. Provare per credere!