gpt4 book ai didi

CakePHP 2基本身份验证

转载 作者:行者123 更新时间:2023-12-04 18:11:38 26 4
gpt4 key购买 nike

我正在从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')
)
);

我知道我还需要扩展BaseAuthenticate Component来返回有效的用户日期,但是即使使用上述配置,我也希望浏览器的Http Access对话框会在弹出窗口中打开。但是不会发生这种情况,而是将我重定向到了不存在的/users/login。为什么我需要Http Access的登录 View ?我很困惑。

最佳答案

Auth组件添加到您的 Controller (或AppController)

class ThingsController extends AppController {  
var $components = array('Auth');
}

CakePHP需要 登录操作,因此,即使您使用基本身份验证(HTTP代理负责UI收集身份验证详细信息),您也需要在某个 Controller 中指定一个操作来处​​理登录(在基本情况下,如果用户尚未通过身份验证,它将发送 WWW-Authenticate: Basic header )。

您可以设置 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());
}

}

关于CakePHP 2基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com