Yii:在没有登录页面的情况下处理登录

Yii:在没有登录页面的情况下处理登录,yii,Yii,我正在使用基于服务器的身份验证,因此我尝试在Yii中实现一个自定义登录系统。为了学习该系统,我尝试创建一个虚拟身份验证类,该类将自动登录用户。我在配置中包含了这个类,但我不知道如何让用户登录 是否有一种方法可以在首次使用应用程序时自动登录(如创建会话时),或者有更好的方法来实现这一点 其基础是自定义身份验证类: class MyAuthentication extends CApplicationComponent implements IUserIdentity {

我正在使用基于服务器的身份验证,因此我尝试在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;
    }

看来你很接近了。在您的示例中,类似这样的内容应该适用:

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;
    }
}

看来你很接近了。在您的示例中,类似这样的内容应该适用:

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;
    }
}

为控制器创建筛选器并检查用户是否经过身份验证。如果未验证,请验证用户。

为控制器创建一个筛选器,并检查用户是否已验证。如果没有,请对用户进行身份验证。

因为我的身份验证基于服务器端变量,所以我能够使用accessRules数组的
表达式
功能来检查该变量是否为真。我编写了一个自定义类来帮助:

class User
{

  public function is_authenticated() 
  {
    return True;
  }

}
并将我的规则更新为使用表达式检查而不是用户检查:


由于我的身份验证基于服务器端变量,因此我能够使用accessRules数组的
表达式
功能来检查该变量是否为真。我编写了一个自定义类来帮助:

class User
{

  public function is_authenticated() 
  {
    return True;
  }

}
并将我的规则更新为使用表达式检查而不是用户检查: