Yii:没有登录页面处理登录

时间:2011-06-15 15:35:56

标签: yii

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

答案 0 :(得分:1)

好像你很亲密。这样的事情应该是你的榜样:

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

答案 1 :(得分:1)

为Controller创建过滤器并检查用户是否已经过身份验证。如果没有,请对用户进行身份验证。

答案 2 :(得分:1)

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

class User
{

  public function is_authenticated() 
  {
    return True;
  }

}

并更新了我的规则以使用表达式检查而不是用户检查as described by the documentation

public function accessRules()
{
    return array(
        array('allow',
            'actions'=>array('index','view', 'new'),
            'expression'=>'User::is_authenticated()',
            ...