CakePHP'de Oturum Flash player kaybetti

4 Cevap php

Hemen hemen herkes aynı sorunu varsa bilmek istiyorum.

Web sitesi, belirli bir görevi gerçekleştirmek için giriş yapmanız gerekiyor. Biz işi yapmak için stok Auth bileşeni kullanmak.

Flash'a inşa arayüz vurur kadar her şey yolunda. AMF konuşmak iyi görünüyor. Ama Flash player diğer denetleyiciye konuşmaya çalıştığınızda - in oturum sunulan çünkü yönlendirme var.

Yani temelde bir kullanıcı giriş yaparken - ben bir şekilde de içinde Flash player giriş için bir yol bulmalıyız.


ADDITION: This only solve half of the problem.

Biraz geriye. Auth bileşenler istekte değerlendirmek nasıl?

Session.checkAgent doğruysa. Onun sonuncusu eğer kontrol edin. Yani Flaş farklı bir Ajan dize var şansı yoktur.

Tamam şimdi - Auth onları kontrol - ne? Onlar daha önce saklamak Oturum çerezi ... yani yine başarısız.

UPDATE

Tüm cevaplar için teşekkürler.

Ben önerilen çözümü denedim. Sadece bir sorun var.

Ben $ this-> params ['eylemleri'] AMF ile başlamak sınamak için çalıştım ben (CakePHP eklentisi gibi) AMF kullanıyorum - bu bazen işe yaramazsa bazen çalışır. "Charles" bakınca ben hepsi amf denetleyiciye çağrı görebilirsiniz. Çok şaşırtıcı ....

4 Cevap

Bu) (Session-> okumak için herhangi bir çağrı önce Session-> id ($ sessionId) aramak için yönetmek, Session-> check () veya Session-> yazma (), sizinle rahatsız gerekmez görünür tüm, eski oturumu yok userAgent güncellemek ve çerez silme şeyler.

flaş denilen controllere arasında beforeFilter eylem bu kullanın:

if ($this->action == 'flashCalledAction') {
    Configure::write('Security.level', 'medium');
    //Using instead the session specified
$this->Session->destroy();
$this->Session->id($_REQUEST['sessionId']);
$this->Session->start();

// We revert to the original userAgent because starting a new session modified it
$this->Session->write('Config.userAgent', $_REQUEST['userAgent']);
// We delete the flash cookie, forcing it to restart this whole process on each request
setcookie(Configure::read('Session.cookie'), '', time() - 42000, $this->Session->path);			
    }

o zaman bu denetleyiciye her flaş çağrı bu 2 params'ı geçmek zorunda:

param: 'userAgent' -> value: '$this->Session->read('Config.userAgent')' 
param: 'sessionId' -> value: $this->Session->id()

http://blogs.bigfish.tv/adam/2008/04/01/cakephp-12-sessions-and-swfupload/

Bu SWFUpload için özel ama checkAgent ve aktif güvenlik için adresler ve ayarlara session_id ekleme süreci kaplıdır ve doğru yönde bir işaret yardımcı olacaktır.

Flash ile istekleri ile birlikte çerez göndermek değil Kek öyle yapmam şekilde içeri giriş yok, neden, işte bu: Eğer bir şekilde $this->Session->id() flash istekleri ile birlikte geçmesi gerekiyor. Bazı flash uygulama isteği boyunca bazı bilgileri etiketlemek izin vermez, çünkü bu muhtemelen zor kısmıdır. Sonra bir flaş istek ise, daha sonra kendi isteği oturum kimliği için bakmak ve oturum kimliğini kontrol edin, bir bileşeni (FlashComponent, veya ne olursa olsun onu aramak istiyorum) yazabilirsiniz. Sen 'Auth' önce bu bileşeni dahil etmek gerekir: yani Auth yok önce var $components = array('Flash','Auth',...) isteği kesmek için.

Yoksa Auth-> listesi izin ayarlayabilirsiniz, ancak daha sonra non-İzne bu eylemleri gösterecektir, ve bu durumda, flaş istek şey geçebilir sürece eylem (kullanıcı oturum açmış geçerli olduğunu kim bilmez ,) benim ilk çözümü kullanın.