Yii: обработка входа без страницы входа - PullRequest
0 голосов
/ 15 июня 2011

Я работаю с аутентификацией на основе сервера, поэтому я пытаюсь внедрить пользовательскую систему входа в систему Yii. Чтобы изучить систему, я попытался создать фиктивный класс аутентификации, который бы автоматически регистрировал пользователя. Я включил класс в конфиг, но я не могу понять, как войти в систему пользователей.

Есть ли способ автоматического входа в систему при первом использовании приложения (например, при создании сеанса?) Или есть ли лучший способ добиться этого?

Основой этого является пользовательский класс аутентификации:

class MyAuthentication 
    extends CApplicationComponent
    implements IUserIdentity {

    private $_username = '';
    private $_authenticated = False;
    ...
    public function authenticate()
    {
        $this->_username = 'exampleUser'; 
        $this->_authenticated = True; 
        return True;
    }

    public function getIsAuthenticated()
    {
        return $this->_authenticated;
    }

Ответы [ 3 ]

1 голос
/ 18 июня 2011

Создайте фильтр для контроллера и убедитесь, что пользователь прошел проверку подлинности или нет.Если нет, аутентифицируйте пользователя.

1 голос
/ 22 июня 2011

Поскольку моя аутентификация была основана на серверной переменной, я смог использовать функцию expression массива accessRules, чтобы проверить, была ли эта переменная истинной. Я написал специальный класс, чтобы помочь:

class User
{

  public function is_authenticated() 
  {
    return True;
  }

}

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

public function accessRules()
{
    return array(
        array('allow',
            'actions'=>array('index','view', 'new'),
            'expression'=>'User::is_authenticated()',
            ...
1 голос
/ 16 июня 2011

кажется, что ты рядом.что-то вроде этого должно работать в вашем примере:

class UserIdentity extends CUserIdentity
{
    private $_username = '';
    private $_authenticated = FALSE;

    public function authenticate()
    {
        $this->_username = 'exampleUser'; 
        $this->_authenticated = TRUE; 
        return $this->_authenticated;
    }
    public function getIsAuthenticated()
    {
        return $this->_authenticated;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...