delvin
(Mail)
1
Привет.
Возникла такая задача. Есть несколько приложений (на yii естественно) работающих с общей БД.
Приложения установлены как в пределах домена, так и на сабдоменах.
Как сделать так, что бы юзер залогинившись в любом из приложений, автоматом авторизовался во всех других приложениях?
rosko
(A)
2
Если общая, общие юзеры и общий логин, то зачем делать несколько приложений? Не проще ли все объединить в одно?
А вообще думаю можно унаследовать класс 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', // название нашего переопределенного класса
...
),
),
Сам это не пробовал, но думаю, что работать будет.
delvin
(Mail)
3
Не, объединять в одно не проще.
Для минимизации оверкодинга использую общий каталог shared, в котором хранятся файлы используемые всеми приложениями.
А способ у меня не заработал. Даже на одном домене два приложения (сам сайт и его панель управления) не желают использовать общую авторизацию.
someone
(198506)
4
Способ работает для параметризованных хостов
Metis
(Morosovdmitry89)
5
Всем привет! Сам сейчас воюю с такой проблемой.
Из найденнных постов для сабдоменов можно использовать параметры куки.
Статья на английском
http://www.yiiframework.com/wiki/135/single-sign-on-across-multiple-subdomains/
А вот с раличными доменами запись кук уже не работает.
Народ пишет openId использовать надо.
Кто-нибудь это уже использовал?