I want to make a dashboard panel web in my existing website. The existing app is using Yii1 can be accessible via, let's say, www.example.com
. I want to make www.example.com/dashboard
using new app using Yii2. I already made the apache configuration.
But what's missing is the session. Users that logged in through Yii1 app will not be recognized in the dashboard.
How to make Yii1 and Yii2 use the same session data, i.e. user that logged in at Yii1 will be recognized in Yii2 vice versa?
UPDATE
The architecture is standard multiple web servers behind a load balancer. The two app can be hosted in the same server instance (the config will be in the apache). Or they can be in different (the load balancer will handle the directory too). But both will use the same memcache server for session storage. The apps also will use the same database, although the ActiveRecord implementation will obviously be in different code. As long as I can get the user ID of the current logged user, it should be okay.
It is possible to share session between two applications (Yii1 and Yii2). Here is how to do it if you are using
CDbHttpSession
in Yii1 andyii\web\DbSession
in Yii2 (I didn't test it with other types of session storage, but it should work same):yii\web\DbSession
for you application you should setup session name to bePHPSESSID
so it can match one used by Yii1.''
. You can do it by extendingCWebUser
and add something like this insidepublic function init()
:public function init() { $this->setStateKeyPrefix(''); parent::init(); }
This is all what you need to be able to share session between two application.
I am not sure it is possible, I know yii2 has a setting for the cookie where the auth details is stored. You might be able to do the same thing in yii1
Take a look here https://github.com/yiisoft/yii2/blob/master/docs/guide/tutorial-shared-hosting.md#separate-sessions-and-cookies you want to do the oposite, share the cookie between them.
Btw I do not believe it is possible if the 2 apps are on different domains.
Another solution I can think of is to try to move the session to something like memcached and use the same key for both apps.
Also take a look here: http://www.yiiframework.com/doc-2.0/guide-tutorial-yii-integration.html you might find something interesting. I believe you may be able to log the user in both places at once, that also might solve your problem.