CakePHP session sharing between two apps, on the same domain
I am having two CakePHP application working on the same domain.
They are located at localhost:8080/wishlist
and localhost:8080/lighthouse
.
"Wishlist" and "lighthouse" are each separate CakePHP applications.
The login page is at localhost:8080/lighthouse
, and I want the session generated by the lighthouse application to be used in the wishlist application.
The directory structure is
开发者_运维技巧/htdocs
/wishlist
/app
/config
....
/lighthouse
/app
/config
....
I have edited the core.php
file for each application. I am using the same session cookie name and the same security sale but I am not able to get the session on the wishlist application.
How can I share a session in between my two applications?
Firstly, install Firefox, Firebug and Firecookie. This will add a 'Cookies' tab to Firebug making it simple to inspect your cookies.
Cookies consist of multiple parts: name, value, domain, path, expires, etc. You are most interested in the 'path' part of the cookie here I believe.
By default CakePHP will restrict the path of each cookie to the subdirectory of your app. For example, when you visit /wishlist
, a cookie will be created but it will be restricted to the /wishlist
subdirectory. When you then go to /lighthouse
the previous cookie won't apply, so thinking that you have no cookie/session, a new one is created that is restricted to the /lighthouse
subdirectory.
You need to change the path of created cookies to /
so they persist across all subdirectories. This should be as easy as adding ini_set('session.cookie_path', '/');
to both application's app/config/bootstrap.php
files.
You should look at developing each one as a plugin or developing them in the same app. I am not sure why you would want to develop two seperate apps when they are sharing a login screen.
精彩评论