Spec-Zone.ru › Yii 1.1

CWebUser

Пакет system.web.auth
Наследование class CWebUser » CApplicationComponent » CComponent
Реализует IApplicationComponent, IWebUser
С момента 1.0
Исходный код framework/web/auth/CWebUser.php
CWebUser представляет собой постоянное состояние пользователя веб-приложения.

CWebUser используется как компонент приложения с идентификатором 'user'. Поэтому в любом месте можно получить доступ к состоянию пользователя с помощью Yii::app()->user.

CWebUser следует использовать вместе с представителем, который реализует фактический алгоритм аутентификации.

Типичный процесс аутентификации с использованием CWebUser выглядит следующим образом:
  1. Пользователь предоставляет информацию, необходимую для аутентификации.
  2. Создается экземпляр представителя идентификатора с предоставленной пользователем информацией.
  3. Вызовите IUserIdentity::authenticate, чтобы проверить, является ли идентификатор действительным.
  4. Если действителен, вызовите CWebUser::login, чтобы войти в систему пользователю, и перенаправьте браузер пользователя на returnUrl.
  5. Если недействителен, получите код или сообщение об ошибке из экземпляра идентификатора и отобразите его.


Свойство id и name являются идентификаторами пользователя. Первый используется в основном внутри (например, первичный ключ), а второй — для отображения (например, имя пользователя). Свойство id — уникальный идентификатор пользователя, сохраняемый на протяжении всей сессии пользователя. Это может быть имя пользователя или что-то другое, в зависимости от реализации класса идентификатора.

Оба свойства id и name сохраняются в течение сессии пользователя. Кроме того, идентификатор может содержать дополнительные постоянные данные, к которым можно получить доступ, вызвав getState. Обратите внимание, что при включенной аутентификации на основе cookie все эти постоянные данные будут храниться в cookie. Поэтому не храните пароль или другие конфиденциальные данные в постоянном хранилище. Вместо этого, при необходимости, сохраняйте их непосредственно в сессии на стороне сервера.

Свойства публичного доступа

Свойство Тип Описание Определено
absoluteAuthTimeout целое число таймаут в секундах, после которого пользователь выходит из системы, независимо от активности. CWebUser
allowAutoLogin булево включить авторизацию на основе cookie. CWebUser
authTimeout целое число таймаут в секундах, после которого пользователь выходит из системы, если неактивен. CWebUser
autoRenewCookie булево автоматически обновлять cookie идентификатора каждый раз при запросе страницы. CWebUser
autoUpdateFlash булево автоматически обновлять актуальность всплывающих сообщений. CWebUser
behaviors массив поведения, которые необходимо прикрепить к данному компоненту. CApplicationComponent
flashes массив Возвращает все всплывающие сообщения. CWebUser
guestName строка имя для гостевого пользователя. CWebUser
id смешанный Возвращает значение, уникально представляющее пользователя. CWebUser
identityCookie массив значения свойств (в виде пар имя-значение), используемые для инициализации cookie идентификатора. CWebUser
isGuest булево возвращает значение, указывающее, является ли пользователь гостем (не авторизован). CWebUser
isInitialized булево Проверяет, был ли инициализирован компонент приложения. CApplicationComponent
loginRequiredAjaxResponse строка значение, которое будет выведено в случае истечения срока действия сессии пользователя во время AJAX-вызова. CWebUser
loginUrl строка|массив URL для входа в систему. CWebUser
name строка Возвращает уникальный идентификатор пользователя (например, имя пользователя). CWebUser
returnUrl строка Возвращает URL, на который должен быть перенаправлен пользователь после успешного входа в систему. CWebUser
stateKeyPrefix строка префикс для имени переменных сессии, хранящих данные сессии пользователя. CWebUser
END_OF_DOCUMENT_MARKER

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__get() Магический метод PHP. CWebUser
__isset() Магический метод PHP. CWebUser
__set() Магический метод PHP. CWebUser
__unset() Магический метод PHP. CWebUser
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Прикрепляет поведение к данному компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик события к событию. CComponent
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
checkAccess() Выполняет проверку доступа для данного пользователя. CWebUser
clearStates() Очищает всю информацию о личности пользователя из постоянного хранилища. CWebUser
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик события. CComponent
disableBehavior() Отключает присоединенное поведение. CComponent
disableBehaviors() Отключает все присоединенные к этому компоненту поведения. CComponent
enableBehavior() Включает присоединенное поведение. CComponent
enableBehaviors() Включает все присоединенные к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет PHP выражение или обратный вызов в контексте данного компонента. CComponent
getEventHandlers() Возвращает список присоединенных обработчиков событий для события. CComponent
getFlash() Возвращает сообщение всплывающего окна. CWebUser
getFlashes() Возвращает все сообщения всплывающего окна. CWebUser
getId() Возвращает значение, уникально представляющее пользователя. CWebUser
getIsGuest() Возвращает значение, указывающее, является ли пользователь гостем (не авторизован). CWebUser
getIsInitialized() Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent
getName() Возвращает уникальный идентификатор пользователя (например, имя пользователя). CWebUser
getReturnUrl() Возвращает URL, на который пользователь должен быть перенаправлен после успешного входа. CWebUser
getState() Возвращает значение переменной, хранящейся в сеансе пользователя. CWebUser
getStateKeyPrefix() Возвращает префикс для имени переменных сеанса, хранящих данные сеанса пользователя. CWebUser
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли присоединенные обработчики для события с указанным именем. CComponent
hasFlash() Определяет, существует ли указанное сообщение всплывающего окна. CWebUser
hasProperty() Определяет, определено ли свойство. CComponent
hasState() Возвращает значение, указывающее, есть ли состояние с указанным именем. CWebUser
init() Инициализирует компонент приложения. CWebUser
login() Выполняет вход пользователя. CWebUser
loginRequired() Перенаправляет браузер пользователя на страницу входа. CWebUser
logout() Выходит текущий пользователь. CWebUser
raiseEvent() Вызывает событие. CComponent
setFlash() Хранит сообщение всплывающего окна. CWebUser
setId() Устанавливает уникальный идентификатор для пользователя. Если null, это означает, что пользователь является гостем. CWebUser
setName() Устанавливает уникальный идентификатор пользователя (например, имя пользователя). CWebUser
setReturnUrl() Устанавливает URL, на который пользователь должен быть перенаправлен после входа. CWebUser
setState() Хранит переменную в сеансе пользователя. CWebUser
setStateKeyPrefix() Устанавливает префикс для имени переменных сеанса, хранящих данные сеанса пользователя. CWebUser

Защищенные методы

Метод Описание Определено в
afterLogin() Этот метод вызывается после успешного входа пользователя. CWebUser
afterLogout() Этот метод вызывается сразу после выхода пользователя. CWebUser
beforeLogin() Этот метод вызывается перед входом пользователя. CWebUser
beforeLogout() Этот метод вызывается при вызове logout для выхода пользователя. CWebUser
changeIdentity() Изменяет текущего пользователя с указанной информацией о личности. CWebUser
createIdentityCookie() Создает cookie для хранения информации о личности. CWebUser
loadIdentityStates() Загружает состояния личности из массива и сохраняет их в постоянном хранилище. CWebUser
renewCookie() Обновляет cookie личности. CWebUser
restoreFromCookie() Заполняет текущий объект пользователя информацией, полученной из cookie. CWebUser
saveIdentityStates() Извлекает состояния личности из постоянного хранилища и сохраняет их в виде массива. CWebUser
saveToCookie() Сохраняет необходимые данные пользователя в cookie. CWebUser
updateAuthStatus() Обновляет статус аутентификации в соответствии с authTimeout. CWebUser
updateFlash() Обновляет внутренние счетчики для сообщений всплывающего окна. CWebUser

Подробное описание свойств

absoluteAuthTimeout свойство (доступно с v1.1.14)

public integer $absoluteAuthTimeout;

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

allowAutoLogin свойство

public boolean $allowAutoLogin;

включить или отключить авторизацию через куки. По умолчанию false.

authTimeout свойство (доступно с v1.1.7)

public integer $authTimeout;

время в секундах, после которого пользователь будет выведен из системы, если он неактивен. Если это свойство не задано, пользователь будет выведен из системы после истечения текущей сессии (см. CHttpSession::timeout).

autoRenewCookie свойство (доступно с v1.1.0)

public boolean $autoRenewCookie;

автоматически обновлять куки пользователя при каждом запросе страницы. По умолчанию false. Это свойство эффективно только если allowAutoLogin равно true. Если false, куки пользователя истекают через заданное время с момента первоначального входа в систему. Если true, куки пользователя истекают через заданное время с момента последнего посещения сайта пользователем.

См. также

  • allowAutoLogin

autoUpdateFlash свойство (доступно с v1.1.7)

public boolean $autoUpdateFlash;

автоматически обновлять срок действия всплывающих сообщений. По умолчанию true, что означает, что сообщения будут действительны только в текущем и следующем запросах. Если это свойство установлено в false, вы должны самостоятельно заботиться об удалении всплывающих сообщений после их использования. (Это можно сделать, вызвав getFlash с третьим параметром, равным true).

flashes свойство только для чтения (доступно с v1.1.3)

public array getFlashes(boolean $delete=true)

Возвращает все всплывающие сообщения. Этот метод похож на getFlash, за исключением того, что возвращает все доступные в данный момент всплывающие сообщения.

guestName свойство

public string $guestName;

имя для пользователя-гостя. По умолчанию 'Гость'. Используется методом getName, когда текущий пользователь гость (не авторизован).

id свойство

public mixed getId()
public void setId(mixed $value)

Возвращает значение, которое уникально идентифицирует пользователя.

identityCookie свойство

public array $identityCookie;

значения свойств (в парах имя-значение), используемые для инициализации куки пользователя. Можно инициализировать любое свойство из CHttpCookie. Это свойство эффективно только если allowAutoLogin равно true.

isGuest свойство только для чтения

public boolean getIsGuest()

Возвращает значение, указывающее, является ли пользователь гостем (не авторизован).

loginRequiredAjaxResponse свойство (доступно с v1.1.9)

public string $loginRequiredAjaxResponse;

значение, которое будет выведено в случае истечения сессии пользователя во время ajax-запроса. Когда происходит запрос и сессия пользователя истекла, loginRequired перенаправляет на loginUrl для входа в систему. Если это происходит во время ajax-запроса, вся HTML-страница входа в систему возвращается в результате этого ajax-запроса. Это может быть проблемой, если ajax-запрос ожидает получить массив json или определённую строку, так как страница входа в систему в этом случае игнорируется. Чтобы решить эту проблему, установите это свойство в желаемое возвращаемое значение.

Если это свойство установлено, это значение будет возвращено в результате ajax-запроса в случае истечения сессии пользователя.

См. также

  • loginRequired

loginUrl свойство

public string|array $loginUrl;

URL для входа в систему. Если используется массив, первый элемент должен быть маршрутом к действию входа в систему, а остальные пары имя-значение — параметрами GET для построения URL входа в систему (например, массив('/site/login')). Если это свойство равно null, вместо этого будет вызвано исключение 403 HTTP.

См. также

  • CController::createUrl

name свойство

public string getName()
public void setName(string $value)

Возвращает уникальный идентификатор пользователя (например, имя пользователя). Это уникальный идентификатор, который в основном используется для отображения.

returnUrl свойство

public string getReturnUrl(string $defaultUrl=NULL)
public void setReturnUrl(string $value)

Возвращает URL, на который должен быть перенаправлен пользователь после успешного входа в систему. Это свойство обычно используется действием входа в систему. Если вход успешен, действие должно считать это свойство и использовать его для перенаправления пользователя в браузере.

См. также

  • loginRequired

stateKeyPrefix свойство

public string getStateKeyPrefix()
public void setStateKeyPrefix(string $value)

префикс для имени переменных сессии, хранящих данные сессии пользователя.

Подробное описание методов

__get() метод

public mixed __get(string $name)
$name строка имя свойства
{return} смешанное значение свойства
Исходный код: framework/web/auth/CWebUser.php#141 (показать)
public function __get($name)
{
    if(
$this->hasState($name))
        return 
$this->getState($name);
    else
        return 
parent::__get($name);
}

Магический метод PHP. Этот метод переопределен для того, чтобы постоянные состояния можно было получать как свойства.

__isset() метод

public boolean __isset(string $name)
$name строка имя свойства
{return} логическое
Исходный код: framework/web/auth/CWebUser.php#170 (показать)
public function __isset($name)
{
    if(
$this->hasState($name))
        return 
$this->getState($name)!==null;
    else
        return 
parent::__isset($name);
}

Магический метод PHP. Этот метод переопределен, чтобы проверять постоянные состояния на null.

__set() метод

public void __set(string $name, mixed $value)
$name строка имя свойства
$value смешанное значение свойства
Исходный код: framework/web/auth/CWebUser.php#156 (показать)
public function __set($name,$value)
{
    if(
$this->hasState($name))
        
$this->setState($name,$value);
    else
        
parent::__set($name,$value);
}

Магический метод PHP. Этот метод переопределен, чтобы устанавливать постоянные состояния как свойства.

__unset() метод

public void __unset(string $name)
$name строка имя свойства
Исходный код: framework/web/auth/CWebUser.php#184 (показать)
public function __unset($name)
{
    if(
$this->hasState($name))
        
$this->setState($name,null);
    else
        
parent::__unset($name);
}

Магический метод PHP. Этот метод переопределен для удаления постоянных состояний.

afterLogin() метод (доступно с v1.1.3)

protected void afterLogin(boolean $fromCookie)
$fromCookie логическое если вход основан на куках.
Исходный код: framework/web/auth/CWebUser.php#424 (показать)
protected function afterLogin($fromCookie)
{
}

Этот метод вызывается после успешного входа пользователя. Вы можете переопределить этот метод для выполнения постобработки (например, записи IP и времени входа пользователя; загрузки информации о правах пользователя).

afterLogout() метод (доступно с v1.1.3)

protected void afterLogout()
Исходный код: framework/web/auth/CWebUser.php#446 (показать)
protected function afterLogout()
{
}

Этот метод вызывается сразу после выхода пользователя. Вы можете переопределить этот метод, чтобы выполнить дополнительные операции по очистке для пользователя.

beforeLogin() метод (доступно с v1.1.3)

protected boolean beforeLogin(mixed $id, array $states, boolean $fromCookie)
$id смешанное Идентификатор пользователя. То же, что возвращается методом getId().
$states массив набор пар имя-значение, предоставленных идентификатором пользователя.
$fromCookie логическое если вход основан на куках
{return} логическое должен ли пользователь войти в систему
Исходный код: framework/web/auth/CWebUser.php#412 (показать)
protected function beforeLogin($id,$states,$fromCookie)
{
    return 
true;
}

Этот метод вызывается перед входом пользователя в систему. Вы можете переопределить этот метод, чтобы добавить дополнительную проверку безопасности. Например, при аутентификации по куки, вы можете проверить, что идентификатор пользователя вместе со случайным токеном в состоянии присутствует в базе данных. Это предотвратит хакеров от подделки произвольных куки-файлов идентификации, даже если они взломают закрытый ключ сервера.

beforeLogout() метод (доступен начиная с v1.1.3)

protected boolean beforeLogout()
{return} boolean необходимо ли выйти из системы для пользователя
Исходный код: framework/web/auth/CWebUser.php#436 (показать)
protected function beforeLogout()
{
    return 
true;
}

Этот метод вызывается при вызове logout для выхода пользователя из системы. Если этот метод возвращает false, действие выхода будет отменено. Вы можете переопределить этот метод, чтобы добавить дополнительную проверку перед выходом пользователя из системы.

changeIdentity() метод

protected void changeIdentity(mixed $id, string $name, array $states)
$id mixed уникальный идентификатор пользователя
$name string имя пользователя для отображения
$states array состояния идентификации
Исходный код: framework/web/auth/CWebUser.php#715 (показать)
protected function changeIdentity($id,$name,$states)
{
    
Yii::app()->getSession()->regenerateID(true);
    
$this->setId($id);
    
$this->setName($name);
    
$this->loadIdentityStates($states);
}

Изменяет текущего пользователя с указанной информацией об идентификации. Этот метод вызывается login и restoreFromCookie, когда текущий пользователь должен быть заполнен соответствующей информацией об идентификации. Производные классы могут переопределить этот метод, чтобы получить дополнительную информацию, связанную с пользователем. Убедитесь, что сначала вызывается родительская реализация.

checkAccess() метод

public boolean checkAccess(string $operation, array $params=array ( ), boolean $allowCaching=true)
$operation string название операции, для которой требуется проверка доступа.
$params array параметры имя-значение, которые будут переданы бизнес-правилам, связанным с задачами и ролями, назначенными пользователю. Начиная с версии 1.1.11 в этот массив добавлен параметр с именем 'userId', содержащий значение getId(), когда используется CDbAuthManager или CPhpAuthManager.
$allowCaching boolean разрешить кэширование результата проверки доступа. Если этот параметр равен true (по умолчанию), если проверка доступа к операции была выполнена ранее, её результат будет возвращён непосредственно при вызове этого метода для проверки той же операции. Если этот параметр равен false, этот метод всегда вызовет CAuthManager::checkAccess, чтобы получить актуальный результат доступа. Обратите внимание, что этот кеширование эффективен только в рамках одного запроса и работает только когда $params=array().
{return} boolean можно ли выполнить операцию этому пользователю.
Исходный код: framework/web/auth/CWebUser.php#812 (показать)
public function checkAccess($operation,$params=array(),$allowCaching=true)
{
    if(
$allowCaching && $params===array() && isset($this->_access[$operation]))
        return 
$this->_access[$operation];

    
$access=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params);
    if(
$allowCaching && $params===array())
        
$this->_access[$operation]=$access;

    return 
$access;
}

Производит проверку доступа для данного пользователя.

clearStates() метод

public void clearStates()
Исходный код: framework/web/auth/CWebUser.php#619 (показать)
public function clearStates()
{
    
$keys=array_keys($_SESSION);
    
$prefix=$this->getStateKeyPrefix();
    
$n=strlen($prefix);
    foreach(
$keys as $key)
    {
        if(!
strncmp($key,$prefix,$n))
            unset(
$_SESSION[$key]);
    }
}

Очищает всю информацию об идентификации пользователя из постоянного хранилища. Это удалит данные, сохранённые с помощью setState.

createIdentityCookie() метод

protected CHttpCookie createIdentityCookie(string $name)
$name string имя куки
{return} CHttpCookie куки, используемые для хранения информации об идентификации
Исходный код: framework/web/auth/CWebUser.php#530 (показать)
protected function createIdentityCookie($name)
{
    
$cookie=new CHttpCookie($name,'');
    if(
is_array($this->identityCookie))
    {
        foreach(
$this->identityCookie as $name=>$value)
            
$cookie->$name=$value;
    }
    return 
$cookie;
}

Создаёт куки для хранения информации об идентификации.

getFlash() метод

public mixed getFlash(string $key, mixed $defaultValue=NULL, boolean $delete=true)
$key string ключ, идентифицирующий сообщение флэша
$defaultValue mixed значение, которое будет возвращено, если сообщение флэша недоступно.
$delete boolean удалить ли это сообщение флэша после доступа к нему. По умолчанию true.
{return} mixed сообщение флэша
Исходный код: framework/web/auth/CWebUser.php#668 (показать)
public function getFlash($key,$defaultValue=null,$delete=true)
{
    
$value=$this->getState(self::FLASH_KEY_PREFIX.$key,$defaultValue);
    if(
$delete)
        
$this->setFlash($key,null);
    return 
$value;
}

Возвращает сообщение флэша. Сообщение флэша доступно только в текущем и следующем запросах.

getFlashes() метод (доступен начиная с v1.1.3)

public array getFlashes(boolean $delete=true)
$delete boolean удалить ли сообщения флэша после вызова этого метода.
{return} array сообщения флэша (ключ => сообщение).
Исходный код: framework/web/auth/CWebUser.php#639 (показать)
public function getFlashes($delete=true)
{
    
$flashes=array();
    
$prefix=$this->getStateKeyPrefix().self::FLASH_KEY_PREFIX;
    
$keys=array_keys($_SESSION);
    
$n=strlen($prefix);
    foreach(
$keys as $key)
    {
        if(!
strncmp($key,$prefix,$n))
        {
            
$flashes[substr($key,$n)]=$_SESSION[$key];
            if(
$delete)
                unset(
$_SESSION[$key]);
        }
    }
    if(
$delete)
        
$this->setState(self::FLASH_COUNTERS,array());
    return 
$flashes;
}

Возвращает все сообщения флэша. Этот метод похож на getFlash, за исключением того, что он возвращает все доступные в данный момент сообщения флэша.

getId() метод

public mixed getId()
{return} mixed уникальный идентификатор пользователя. Если null, это означает, что пользователь гость.
Исходный код: framework/web/auth/CWebUser.php#297 (показать)
public function getId()
{
    return 
$this->getState('__id');
}

Возвращает значение, уникально представляющее пользователя.

getIsGuest() метод

public boolean getIsGuest()
{return} boolean является ли текущий пользователь приложения гостем.
Исходный код: framework/web/auth/CWebUser.php#288 (показать)
public function getIsGuest()
{
    return 
$this->getState('__id')===null;
}

Возвращает значение, указывающее, является ли пользователь гостем (не аутентифицирован).

getName() метод

public string getName()
{return} string имя пользователя. Если пользователь не вошёл в систему, это будет guestName.
Исходный код: framework/web/auth/CWebUser.php#315 (показать)
public function getName()
{
    if((
$name=$this->getState('__name'))!==null)
        return 
$name;
    else
        return 
$this->guestName;
}

Возвращает уникальный идентификатор пользователя (например, имя пользователя). Это уникальный идентификатор, который в основном используется для отображения.

getReturnUrl() метод

public string getReturnUrl(string $defaultUrl=NULL)
$defaultUrl string адрес возврата по умолчанию в случае, если он не был установлен ранее. Если это null, URL входа в приложение будет рассматриваться как адрес возврата по умолчанию.
{return} string URL, на который пользователь должен быть перенаправлен после входа в систему.
Исходный код: framework/web/auth/CWebUser.php#342 (показать)
public function getReturnUrl($defaultUrl=null)
{
    if(
$defaultUrl===null)
    {
        
$defaultReturnUrl=Yii::app()->getUrlManager()->showScriptName ? Yii::app()->getRequest()->getScriptUrl() : Yii::app()->getRequest()->getBaseUrl().'/';
    }
    else
    {
        
$defaultReturnUrl=CHtml::normalizeUrl($defaultUrl);
    }
    return 
$this->getState('__returnUrl',$defaultReturnUrl);
}

Возвращает URL, на который пользователь должен быть перенаправлен после успешного входа в систему. Это свойство обычно используется действием входа в систему. Если вход в систему успешен, действие должно прочитать это свойство и использовать его для перенаправления браузера пользователя.

См. также

  • loginRequired

getState() метод

public mixed getState(string $key, mixed $defaultValue=NULL)
$key строка имя переменной
$defaultValue смешанный тип значение по умолчанию
{return} смешанный тип значение переменной. Если оно не существует в сессии, будет возвращено предоставленное значение по умолчанию
Исходный код: framework/web/auth/CWebUser.php#574 (показать)
public function getState($key,$defaultValue=null)
{
    
$key=$this->getStateKeyPrefix().$key;
    return isset(
$_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
}

Возвращает значение переменной, хранящейся в сессии пользователя.

Эта функция предназначена для использования классами-наследниками CWebUser, которые хотят хранить дополнительную информацию о пользователе в сессии пользователя. Переменная, если хранится в сессии пользователя с помощью setState, может быть получена обратно с помощью этой функции.

См. также

  • setState

getStateKeyPrefix() метод

public string getStateKeyPrefix()
{return} строка префикс для имени переменных сессии, хранящих данные сессии пользователя.
Исходный код: framework/web/auth/CWebUser.php#544 (показать)
public function getStateKeyPrefix()
{
    if(
$this->_keyPrefix!==null)
        return 
$this->_keyPrefix;
    else
        return 
$this->_keyPrefix=md5('Yii.'.get_class($this).'.'.Yii::app()->getId());
}

hasFlash() метод

public boolean hasFlash(string $key)
$key строка ключ, идентифицирующий всплывающее сообщение
{return} булево существует ли указанное всплывающее сообщение
Исходный код: framework/web/auth/CWebUser.php#699 (показать)
public function hasFlash($key)
{
    return 
$this->getFlash($key, null, false)!==null;
}

hasState() метод

public boolean hasState(string $key)
$key строка имя состояния
{return} булево существует ли состояние с указанным именем.
Исходный код: framework/web/auth/CWebUser.php#609 (показать)
public function hasState($key)
{
    
$key=$this->getStateKeyPrefix().$key;
    return isset(
$_SESSION[$key]);
}

Возвращает значение, указывающее, существует ли состояние с указанным именем.

init() метод

public void init()
Исходный код: framework/web/auth/CWebUser.php#197 (показать)
public function init()
{
    
parent::init();
    
Yii::app()->getSession()->open();
    if(
$this->getIsGuest() && $this->allowAutoLogin)
        
$this->restoreFromCookie();
    elseif(
$this->autoRenewCookie && $this->allowAutoLogin)
        
$this->renewCookie();
    if(
$this->autoUpdateFlash)
        
$this->updateFlash();

    
$this->updateAuthStatus();
}

Инициализирует компонент приложения. Этот метод переопределяет реализацию родительского класса, запуская сеанс, выполняя аутентификацию на основе cookie (если включена), и обновляя переменные всплывающих сообщений.

loadIdentityStates() метод

protected void loadIdentityStates(array $states)
$states массив состояния идентификатора
Исходный код: framework/web/auth/CWebUser.php#739 (показать)
protected function loadIdentityStates($states)
{
    
$names=array();
    if(
is_array($states))
    {
        foreach(
$states as $name=>$value)
        {
            
$this->setState($name,$value);
            
$names[$name]=true;
        }
    }
    
$this->setState(self::STATES_VAR,$names);
}

Загружает состояния идентификатора из массива и сохраняет их в постоянном хранилище.

login() метод

public boolean login(IUserIdentity $identity, integer $duration=0)
$identity IUserIdentity идентификатор пользователя (который уже должен быть аутентифицирован)
$duration целое число количество секунд, в течение которых пользователь может оставаться в состоянии входа в систему. По умолчанию 0, что означает вход до тех пор, пока пользователь не закроет браузер. Если больше 0, будет использоваться вход на основе cookie. В этом случае allowAutoLogin должен быть установлен в true, в противном случае будет выброшено исключение.
{return} булево войден ли пользователь
Исходный код: framework/web/auth/CWebUser.php#229 (показать)
public function login($identity,$duration=0)
{
    
$id=$identity->getId();
    
$states=$identity->getPersistentStates();
    if(
$this->beforeLogin($id,$states,false))
    {
        
$this->changeIdentity($id,$identity->getName(),$states);

        if(
$duration>0)
        {
            if(
$this->allowAutoLogin)
                
$this->saveToCookie($duration);
            else
                throw new 
CException(Yii::t('yii','{class}.allowAutoLogin must be set true in order to use cookie-based authentication.',
                    array(
'{class}'=>get_class($this))));
        }

        if (
$this->absoluteAuthTimeout)
            
$this->setState(self::AUTH_ABSOLUTE_TIMEOUT_VAR, time()+$this->absoluteAuthTimeout);
        
$this->afterLogin(false);
    }
    return !
$this->getIsGuest();
}

Производит вход пользователя.

Информация об идентификаторе пользователя будет сохранена в хранилище, которое сохраняется в течение сессии пользователя. По умолчанию хранилище — это просто хранилище сессии. Если параметр duration больше 0, будет отправлен cookie для подготовки к входу на основе cookie в будущем.

Обратите внимание, что вы должны установить allowAutoLogin в значение true, если хотите разрешить аутентификацию пользователя на основе информации cookie.

loginRequired() метод

public void loginRequired()
Исходный код: framework/web/auth/CWebUser.php#372 (показать)
public function loginRequired()
{
    
$app=Yii::app();
    
$request=$app->getRequest();

    if(!
$request->getIsAjaxRequest())
    {
        
$this->setReturnUrl($request->getUrl());
        if((
$url=$this->loginUrl)!==null)
        {
            if(
is_array($url))
            {
                
$route=isset($url[0]) ? $url[0] : $app->defaultController;
                
$url=$app->createUrl($route,array_splice($url,1));
            }
            
$request->redirect($url);
        }
    }
    elseif(isset(
$this->loginRequiredAjaxResponse))
    {
        echo 
$this->loginRequiredAjaxResponse;
        
Yii::app()->end();
    }

    throw new 
CHttpException(403,Yii::t('yii','Login Required'));
}

Перенаправляет браузер пользователя на страницу входа в систему. Перед перенаправлением текущий URL (если это не URL AJAX) будет сохранён в returnUrl, чтобы браузер пользователя мог быть перенаправлен обратно на текущую страницу после успешного входа в систему. Убедитесь, что вы установили loginUrl, чтобы браузер пользователя мог быть перенаправлен на указанный URL входа после вызова этого метода. После вызова этого метода обработка текущего запроса будет завершена.

logout() метод

public void logout(boolean $destroySession=true)
$destroySession булево необходимо ли уничтожить всю сессию. По умолчанию true. Если false, то вызывается clearStates, который удаляет только данные, сохранённые с помощью setState.
Исходный код: framework/web/auth/CWebUser.php#260 (показать)
public function logout($destroySession=true)
{
    if(
$this->beforeLogout())
    {
        if(
$this->allowAutoLogin)
        {
            
Yii::app()->getRequest()->getCookies()->remove($this->getStateKeyPrefix());
            if(
$this->identityCookie!==null)
            {
                
$cookie=$this->createIdentityCookie($this->getStateKeyPrefix());
                
$cookie->value=null;
                
$cookie->expire=0;
                
Yii::app()->getRequest()->getCookies()->add($cookie->name,$cookie);
            }
        }
        if(
$destroySession)
            
Yii::app()->getSession()->destroy();
        else
            
$this->clearStates();
        
$this->_access=array();
        
$this->afterLogout();
    }
}

Выходит из системы текущего пользователя. Это удалит данные сессии, относящиеся к аутентификации. Если параметр равен true, вся сессия будет уничтожена также.

renewCookie() метод (доступен с версии v1.1.3)

protected void renewCookie()
Исходный код: framework/web/auth/CWebUser.php#487 (показать)
protected function renewCookie()
{
    
$request=Yii::app()->getRequest();
    
$cookies=$request->getCookies();
    
$cookie=$cookies->itemAt($this->getStateKeyPrefix());
    if(
$cookie && !empty($cookie->value) && ($data=Yii::app()->getSecurityManager()->validateData($cookie->value))!==false)
    {
        
$data=@unserialize($data);
        if(
is_array($data) && isset($data[0],$data[1],$data[2],$data[3]))
        {
            
$this->saveToCookie($data[2]);
        }
    }
}

Обновляет cookie идентификатора. Этот метод установит время истечения срока действия cookie идентификатора в текущее время плюс первоначально указанный срок действия cookie.

restoreFromCookie() метод

protected void restoreFromCookie()
Исходный код: framework/web/auth/CWebUser.php#457 (показать)
protected function restoreFromCookie()
{
    
$app=Yii::app();
    
$request=$app->getRequest();
    
$cookie=$request->getCookies()->itemAt($this->getStateKeyPrefix());
    if(
$cookie && !empty($cookie->value) && is_string($cookie->value) && ($data=$app->getSecurityManager()->validateData($cookie->value))!==false)
    {
        
$data=@unserialize($data);
        if(
is_array($data) && isset($data[0],$data[1],$data[2],$data[3]))
        {
            list(
$id,$name,$duration,$states)=$data;
            if(
$this->beforeLogin($id,$states,true))
            {
                
$this->changeIdentity($id,$name,$states);
                if(
$this->autoRenewCookie)
                {
                    
$this->saveToCookie($duration);
                }
                
$this->afterLogin(true);
            }
        }
    }
}

Заполняет текущий объект пользователя информацией, полученной из cookie. Этот метод используется при автоматическом входе (allowAutoLogin) включен. Информация об идентификаторе пользователя извлекается из cookie. Используются достаточные меры безопасности, чтобы предотвратить несанкционированное изменение данных cookie.

См. также

  • saveToCookie

saveIdentityStates() метод

protected array saveIdentityStates()
{return} массив состояния идентификатора
Исходный код: framework/web/auth/CWebUser.php#727 (показать)
protected function saveIdentityStates()
{
    
$states=array();
    foreach(
$this->getState(self::STATES_VAR,array()) as $name=>$dummy)
        
$states[$name]=$this->getState($name);
    return 
$states;
}

Извлекает состояния идентификатора из постоянного хранилища и сохраняет их в виде массива.

saveToCookie() метод

protected void saveToCookie(integer $duration)
$duration целое число количество секунд, в течение которых пользователь может оставаться в состоянии входа в систему. По умолчанию 0, что означает вход до тех пор, пока пользователь не закроет браузер.
Исходный код: framework/web/auth/CWebUser.php#510 (показать)
protected function saveToCookie($duration)
{
    
$app=Yii::app();
    
$cookie=$this->createIdentityCookie($this->getStateKeyPrefix());
    
$cookie->expire=time()+$duration;
    
$data=array(
        
$this->getId(),
        
$this->getName(),
        
$duration,
        
$this->saveIdentityStates(),
    );
    
$cookie->value=$app->getSecurityManager()->hashData(serialize($data));
    
$app->getRequest()->getCookies()->add($cookie->name,$cookie);
}

Сохраняет необходимые данные пользователя в cookie. Этот метод используется при включенном автоматическом входе (allowAutoLogin). Данный метод сохраняет идентификатор пользователя, имя пользователя, другие состояния аутентификации и ключ проверки в cookie. Эта информация используется для аутентификации при следующем посещении приложения пользователем.

См. также

  • restoreFromCookie

setFlash() метод

public void setFlash(string $key, mixed $value, mixed $defaultValue=NULL)
$key строка ключ, идентифицирующий сообщение всплывающей подсказки
$value смешанный тип сообщение всплывающей подсказки
$defaultValue смешанный тип если это значение совпадает с сообщением всплывающей подсказки, сообщение будет удалено. (Поэтому можно использовать setFlash('key',null) для удаления сообщения всплывающей подсказки.)
Исходный код: framework/web/auth/CWebUser.php#684 (показать)
public function setFlash($key,$value,$defaultValue=null)
{
    
$this->setState(self::FLASH_KEY_PREFIX.$key,$value,$defaultValue);
    
$counters=$this->getState(self::FLASH_COUNTERS,array());
    if(
$value===$defaultValue)
        unset(
$counters[$key]);
    else
        
$counters[$key]=0;
    
$this->setState(self::FLASH_COUNTERS,$counters,array());
}

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

setId() метод

public void setId(mixed $value)
$value смешанный тип уникальный идентификатор пользователя. Если null, значит пользователь гость.
Исходный код: framework/web/auth/CWebUser.php#305 (показать)
public function setId($value)
{
    
$this->setState('__id',$value);
}

setName() метод

public void setName(string $value)
$value строка имя пользователя.
Исходный код: framework/web/auth/CWebUser.php#328 (показать)
public function setName($value)
{
    
$this->setState('__name',$value);
}

Устанавливает уникальный идентификатор пользователя (например, имя пользователя).

См. также

  • getName

setReturnUrl() метод

public void setReturnUrl(string $value)
$value строка URL, на который должен быть перенаправлен пользователь после входа.
Исходный код: framework/web/auth/CWebUser.php#358 (показать)
public function setReturnUrl($value)
{
    
$this->setState('__returnUrl',$value);
}

setState() метод

public void setState(string $key, mixed $value, mixed $defaultValue=NULL)
$key строка имя переменной
$value смешанный тип значение переменной
$defaultValue смешанный тип значение по умолчанию. Если $value===$defaultValue, переменная будет удалена из сессии
Исходный код: framework/web/auth/CWebUser.php#595 (показать)
public function setState($key,$value,$defaultValue=null)
{
    
$key=$this->getStateKeyPrefix().$key;
    if(
$value===$defaultValue)
        unset(
$_SESSION[$key]);
    else
        
$_SESSION[$key]=$value;
}

Сохраняет переменную в сессии пользователя.

Эта функция предназначена для использования наследниками класса CWebUser, которые хотят сохранить дополнительную информацию о пользователе в сессии. Сохраняя переменную с помощью этой функции, её можно позже получить с помощью getState. Переменная будет сохраняться между запросами страницы во время сессии пользователя.

См. также

  • getState

setStateKeyPrefix() метод

public void setStateKeyPrefix(string $value)
$value строка префикс для имени переменных сессии, хранящих данные сессии пользователя.
Исходный код: framework/web/auth/CWebUser.php#555 (показать)
public function setStateKeyPrefix($value)
{
    
$this->_keyPrefix=$value;
}

updateAuthStatus() метод (доступен начиная с v1.1.7)

protected void updateAuthStatus()
Исходный код: framework/web/auth/CWebUser.php#782 (показать)
protected function updateAuthStatus()
{
    if((
$this->authTimeout!==null || $this->absoluteAuthTimeout!==null) && !$this->getIsGuest())
    {
        
$expires=$this->getState(self::AUTH_TIMEOUT_VAR);
        
$expiresAbsolute=$this->getState(self::AUTH_ABSOLUTE_TIMEOUT_VAR);

        if (
$expires!==null && $expires < time() || $expiresAbsolute!==null && $expiresAbsolute < time())
            
$this->logout(false);
        else
            
$this->setState(self::AUTH_TIMEOUT_VAR,time()+$this->authTimeout);
    }
}

Обновляет статус аутентификации в соответствии с authTimeout. Если пользователь был неактивен в течение authTimeout секунд или истекло время {link absoluteAuthTimeout}, он будет автоматически выведен из системы.

updateFlash() метод

protected void updateFlash()
Исходный код: framework/web/auth/CWebUser.php#758 (показать)
protected function updateFlash()
{
    
$counters=$this->getState(self::FLASH_COUNTERS);
    if(!
is_array($counters))
        return;
    foreach(
$counters as $key=>$count)
    {
        if(
$count)
        {
            unset(
$counters[$key]);
            
$this->setState(self::FLASH_KEY_PREFIX.$key,null);
        }
        else
            
$counters[$key]++;
    }
    
$this->setState(self::FLASH_COUNTERS,$counters,array());
}

Обновляет внутренние счётчики для сообщений всплывающей подсказки. Этот метод используется в классе CWebApplication для поддержания доступности сообщений всплывающей подсказки.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CWebUser

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API