我已经阅读了Authentication core library 的文档,但并不清楚如何使用它。它似乎假设了很多先验知识。
具体来说:
您可以使用 $this->Auth->authenticate 配置身份验证处理程序。您可以为身份验证配置一个或多个处理程序。使用多个处理程序允许您支持登录用户的不同方式。当登录用户时,身份验证处理程序按照声明的顺序进行检查。一旦一个处理程序能够识别用户,就不会检查其他处理程序。相反,您可以通过抛出异常来停止所有身份验证。您将需要捕获任何抛出的异常,并根据需要处理它们。
您可以在控制器的 beforeFilter 或 $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() {
}
}
这个异常会触发:
语法错误,意外的 '$this' (T_VARIABLE),期望函数 (T_FUNCTION) 错误:发生内部错误。
堆栈跟踪 CORE\Cake\Error\ErrorHandler.php 第 162 行 → ErrorHandler::handleFatalError(integer, string, string, integer) [内部函数] → ErrorHandler::handleError(integer, string, string, integer, array) CORE\Cake \Core\App.php 第 926 行 → call_user_func(string, integer, string, string, integer, array) CORE\Cake\Core\App.php 第 899 行 → App::_checkFatalError() [内部函数] → App::shutdown ()
谁能提供一个简单的例子来说明如何保护控制器,以便只有经过身份验证的用户才能访问它?我还可以保护单个 Action 函数吗?