Не сохраняется авторизация пользователя

Приветствую всех!

У меня проблема такая что не сохраняется авторизация пользователя на сайта и после 20 минут неактивности сбрасывается авторизация. Хотя куки сохраняется. Сайт работает с поддоменами виртуальными. В конфиге прописана привязка на .site.ru. Подскажите, пожалуйста в какую сторону рыть?

В модели юзеров прописан duration на 30 дней.

В конфиге:





		'session' => array(

			'class' => 'CDbHttpSession',

			'connectionID' => 'db',

            'sessionName' => 'sessid',

			'timeout' => 3200,

			'autoCreateSessionTable' => false,

			'cookieParams' => array(

                                'domain' => '.site.ru',

								'lifetime'=>24*3600*30,

                        ),

		),


		'user'=>array(

			'class'=>'WebUser',

			'allowAutoLogin'    =>  true,

                        'autoRenewCookie'   =>  true,

                        'identityCookie' => array(

                                'domain' => '.site.ru',

                                'expire' => 24*3600*30,

                         ),

			'loginUrl' => array('/user/login'),

		),


		'authManager'=>array(

			'class'=>'PhpAuthManager',

			//'connectionID'=>'db',

			'defaultRoles'=>array('guest'),

			'showErrors' => YII_DEBUG,

		),



в WebUser:





<?php

class WebUser extends CWebUser {

    private $_model = null;

    protected $_keyPrefix;

 

	public function init()

	{

		parent::init();

        $this->stateKeyPrefix = md5(Yii::app()->name);

	}

...



в модели Users





	public function login($username, $userpass)

	{

		if($this->_identity===null)

		{

			$this->_identity=new UserIdentity($username, $userpass);

			$this->_identity->authenticate();

		}

		

		

		if($this->_identity->errorCode===UserIdentity::ERROR_STATUS_NOTACTIV)

		{

			// @todo

		}

		if($this->_identity->errorCode===UserIdentity::ERROR_NONE)

		{

			$duration = 24*3600*30; // 30 days

			if (Yii::app()->user->login($this->_identity,$duration)) {

                        $this->updateByPk(Yii::app()->user->getId(), array('lastLogin' => time()));

						Yii::app()->user->name = Yii::app()->user->getData()->login;

			}

		}

		else

			return $this->_identity->errorCode;

			

		return $this->_identity->errorCode;

	}



самое главное когда тестируешь чисть куки

второе - смотри куки: для поддоменов не должны создаватсья отдельные куки.

попробуй прописать в пхп.ини

session.cookie_domain = site.ru

после этого у меня завелось все.

еще один момент, если все в итоге получится то скорее всего будет проблема с фаерфоксом, метод логаут не будет фунциклировать, решение нашлось в англоязычном форуме:




	public function logout($destroySession = true)

	{

      if($this->allowAutoLogin && isset($this->identityCookie['domain'])) {

         $cookies = Yii::app()->getRequest()->getCookies();


         if(null !== ($cookie = $cookies[$this->getStateKeyPrefix()]))

         {

            $originalCookie = new CHttpCookie($cookie->name, $cookie->value);

            $cookie->domain = $this->identityCookie['domain'];

            $cookies->remove($this->getStateKeyPrefix());

            $cookies->add($originalCookie->name, $originalCookie);

         }

      }


      parent::logout($destroySession);

   }



Посмотрите, что у вас написано в session.gc_maxlifetime в php.ini

В php.inisession.gc_maxlifetime = 1440,

меняю на большее, по результату отпишу, спасибо всем

Увы, не помогает. Также сбрасывается :(

Посмотрите, лежит ли файл сессии, там где он должен быть, по прошествии 20 минут.

Не понимаю зачем советуют смотреть php.ini если автор предлагается хранить сессии в базе с помощью класса CDbHttpSession.

Если куки у вас сохраняются то копать нужно в сторону CDbHttpSession и смотреть что происходит с базой.

Вопрос решен. Спасибо всем ответившим.

[color=#1C2837][size=2][color=#000000] [/color][color=#008800]‘session’[/color][color=#000000] [/color][color=#666600]=>[/color][color=#000000] array[/color][color=#666600]([/color][color=#000000]

                    [/color][color=#008800]'class'[/color][color=#000000] [/color][color=#666600]=&gt;[/color][color=#000000] [/color][color=#008800]'CDbHttpSession'[/color][color=#666600],[/color][color=#000000]


                    [/color][color=#008800]'connectionID'[/color][color=#000000] [/color][color=#666600]=&gt;[/color][color=#000000] [/color][color=#008800]'db'[/color][color=#666600],[/color][color=#000000]


        		[/color][color=#008800]'sessionName'[/color][color=#000000] [/color][color=#666600]=&gt;[/color][color=#000000] [/color][color=#008800]'sessid'[/color][color=#666600],[/color][color=#000000]


                    [/color][color=#008800]'timeout'[/color][color=#000000] [/color][color=#666600]=&gt;[/color][color=#000000] [/color][color=&quot;#006666&quot;]24*3600*30[/color][color=#666600], // тут помогло[/color][/size][/color]

Это от невнимательности, извиняюсь.