如何使用CakePHP 2.2对用户进行身份验证?

如何使用CakePHP 2.2对用户进行身份验证?,php,authentication,cakephp-2.2,Php,Authentication,Cakephp 2.2,我已经阅读了核心库的文档 ,而且还不清楚如何使用它。它似乎假设了很多先验知识 具体而言: 您可以使用$this->Auth->authenticate配置身份验证处理程序。 您可以为身份验证配置一个或多个处理程序。使用 多个处理程序允许您支持不同的日志记录方式 中的用户。用户登录时,会检查身份验证处理程序 按照它们被宣布的顺序。一旦一个处理程序能够识别 对于用户,将不检查其他处理程序。相反,你可以停下来 通过引发异常进行所有身份验证。你需要抓紧时间 任何抛出的异常,并根据需要处理它们 您可以在控

我已经阅读了核心库的文档 ,而且还不清楚如何使用它。它似乎假设了很多先验知识

具体而言:

您可以使用$this->Auth->authenticate配置身份验证处理程序。 您可以为身份验证配置一个或多个处理程序。使用 多个处理程序允许您支持不同的日志记录方式 中的用户。用户登录时,会检查身份验证处理程序 按照它们被宣布的顺序。一旦一个处理程序能够识别 对于用户,将不检查其他处理程序。相反,你可以停下来 通过引发异常进行所有身份验证。你需要抓紧时间 任何抛出的异常,并根据需要处理它们

您可以在控制器的 在$components数组中,在筛选之前或之后。您可以通过配置 使用数组将信息导入每个身份验证对象:

因此,在我的
PeopleController
中,我在示例代码中写道:

<?php
class PeopleController extends AppController {
    public $helpers = array('Html', 'Form');

    $this->Auth->authenticate = array(
        AuthComponent::ALL => array('userModel' => 'Member'),
        'Form',
        'Basic'
    );

    public function index() {

    }
}

如果我没有错,您应该在
beforeFilter()中执行此操作。


而且,正如Martin已经提到的,
$this
只能在(对象)方法中使用,因为
$this
指调用该方法的当前对象。

在类定义中不能有实例引用

$this
只能在类方法中访问

在控制器中(比如AppController.php):

public function beforeFilter(){
    parent::beforeFilter();
    $this->Auth->authenticate = array(
        AuthComponent::ALL => array('userModel' => 'Member'),
        'Form',
        'Basic'
    );
}
    public $components = array(
    'Auth' => array(
        'loginAction' => 'login',
        'loginRedirect' => 'home',
        'authenticate' => array(
            'Form' => array(
                'userModel' => 'User',
                'fields' => array( 'password' => 'password' ),
                'scope' => array( 'User.active' => true )
            )
        )
    )
);