我在Symfony2中構建一個應用程序來替換使用CakePHP 1.3構建的遺留應用程序。這是一個很大的應用程序,爲了滿足最終用戶的需求,決定將新應用程序與遺留應用程序配合使用,並且在Symfony2中重新編寫舊系統的功能時,用戶將被無縫導向新應用程序。如何讓Symfony2使用與CakePHP 1.3生成的會話相同的會話?
爲了保持干擾降至最低,還決定了用戶將只需要一次登錄到舊的應用程序和依據,如果他們登錄的新應用程序應該只給訪問用戶在或不在。所以新的應用程序依靠舊的應用程序來處理安全性。此外,舊的CakePHP應用程序位於www.domain.org
,而新的Symfony2應用程序位於子域new.domain.org
上。
我現在面臨的問題是我如何精確地使用在Symfony2中的CakePHP中創建的會話。我已經嘗試了一些東西,比如將用戶的ID寫入cookie,然後讓Symfony2檢查cookie是否已設置。這樣做允許用戶從舊系統導航到新系統,但只要從新系統中點擊舊系統的鏈接,舊系統就會引導用戶再次請求他們重新登錄。
在CakePHP的1.3碼,每個區域的頂部有下面的代碼:
$this->checkSession();
我從來沒有建立CakePHP的1.3應用程序,我已經CakePHP的1.3的沒有工作經驗(我做的CakePHP的2.0)。所以從做了一些周圍挖掘的,我在core.php
文件已經找到了該會話的配置,如下:
Configure::write('Session.cookie', 'DOMAIN');
Configure::write('Session.timeout', '120');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', true);
Configure::write('Security.level', 'medium');
Configure::write('Security.salt', '***RANDOM STRING***');
Configure::write('Security.cipherSeed', '***RANDOM STRING***');
還有一個ACL一些代碼,但是這似乎沒有不包含很多或做任何事情。它們是:
Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');
我可以爲了可能彎曲它Symfony的工作改變一些CakePHP中的代碼,但我不能對代碼做任何大規模的改動。之前編寫CakePHP 1.3的程序員早已消失,並且沒有任何文檔。
那麼,我如何才能讓Symfony2使用CakePHP創建和使用的相同會話,並且還阻止CakePHP在用戶點擊新應用程序的鏈接時將其記錄下來?
可能重複://計算器。 com/questions/17791519/how-to-read-a-cookie-using-symfony-2) – AD7six
這不是重複的,因爲這是指會話。此外,當用戶點擊Symfony2應用程序中的鏈接時,CakePHP如何將用戶登錄出去還有一個額外的問題。 – mickburkejnr
會話ID存儲在cookie中。如果它不是重複的,你所要求的不同之處並不明顯(參考已經覆蓋的地面會有所幫助)。 – AD7six