Общая авторизация

Привет.

Возникла такая задача. Есть несколько приложений (на yii естественно) работающих с общей БД.

Приложения установлены как в пределах домена, так и на сабдоменах.

Как сделать так, что бы юзер залогинившись в любом из приложений, автоматом авторизовался во всех других приложениях?

Если общая, общие юзеры и общий логин, то зачем делать несколько приложений? Не проще ли все объединить в одно?

А вообще думаю можно унаследовать класс CWebUser и переопределить в нем метод saveToCookie(), написав что-то вроде:




class MyWebUser extends CWebUser {


	protected function saveToCookie($duration)

	{

		$app=Yii::app();

		$cookie=$this->createIdentityCookie($this->getStateKeyPrefix());

		$cookie->expire=time()+$duration;


                $cookie->domain = '.site.com'; // тут вводите ваш домен с предваряющей точкой


		$data=array(

			$this->getId(),

			$this->getName(),

			$duration,

			$this->saveIdentityStates(),

		);

		$cookie->value=$app->getSecurityManager()->hashData(serialize($data));

		$app->getRequest()->getCookies()->add($cookie->name,$cookie);

	}


}



А в конфигурации для компоненты приложения user указать наш новый класс




    ...

    'components'=>array(

        ...

        'user'=>array(

            'class' => 'MyWebUser', // название нашего переопределенного класса

            ...

        ),

    ),



Сам это не пробовал, но думаю, что работать будет.

Не, объединять в одно не проще.

Для минимизации оверкодинга использую общий каталог shared, в котором хранятся файлы используемые всеми приложениями.

А способ у меня не заработал. Даже на одном домене два приложения (сам сайт и его панель управления) не желают использовать общую авторизацию.

Способ работает для параметризованных хостов

Всем привет! Сам сейчас воюю с такой проблемой.

Из найденнных постов для сабдоменов можно использовать параметры куки.

Статья на английском

http://www.yiiframework.com/wiki/135/single-sign-on-across-multiple-subdomains/

А вот с раличными доменами запись кук уже не работает.

Народ пишет openId использовать надо.

Кто-нибудь это уже использовал?