Mar*_*ark 5 cakephp http-authentication cakephp-2.0 cakephp-2.1 cakephp-2.2
我正在从CakePHP 1.3迁移到CakePHP 2.2.2,并希望将Basic Http身份验证用于简单的管理区域.我只是无法使它工作,我想我在文档中理解了一些错误.
从我理解的文档中我必须做类似的事情
public $components = array(
'Auth' => array(
'authenticate' => array(
'Basic'
),
'authError' => 'You may not access this area.',
'authorize' => array('Controller')
)
);
Run Code Online (Sandbox Code Playgroud)
据我所知,我需要扩展BaseAuthenticate组件以返回有效的用户日期,但即使使用上述配置,我也希望浏览器的Http Access对话框能够在弹出窗口中打开.但是没有这样的事情发生,相反,我被重定向到/ users/login,这是不存在的.为什么我需要Http Access的登录视图?我很迷惑.
将Auth组件添加到控制器(或AppController)
class ThingsController extends AppController {
var $components = array('Auth');
}
Run Code Online (Sandbox Code Playgroud)
CakePHP需要登录操作,因此即使您使用基本身份验证,HTTP代理负责收集身份验证详细信息的UI,您需要在某个控制器中指定一个操作来处理登录(在基本情况下,它将WWW-Authenticate: Basic如果用户未经过身份验证,则发送标头).
您可以设置AuthCompoment的$loginAction,但这个默认值(和建议不打破惯例)的login方法中UsersController.因此,首先创建一个空模板View/Users/login.ctp,然后将以下内容添加到您的模板中UsersController
class UsersController extends AppController {
public $components = array(
'Session',
'Auth' => array(
'authenticate' => array('Basic')
)
);
public function login() {
if ($this->Auth->login()) {
return $this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash('Not able to login');
}
}
public function logout() {
$this->redirect($this->Auth->logout());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |