我正在从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组件以返回有效的用户日期,但即使使用上述配置,我也希望浏览器的Http Access对话框能够在弹出窗口中打开。但是没有这样的事情发生,相反,我被重定向到/ users / login,这是不存在的。为什么我需要Http Access的登录视图?我很困惑。
答案 0 :(得分:7)
将Auth
组件添加到控制器(或AppController
)
class ThingsController extends AppController {
var $components = array('Auth');
}
CakePHP需要登录操作,所以即使您使用基本身份验证,HTTP代理负责收集身份验证详细信息的UI,您需要在某个控制器中指定一个操作来处理登录(在基本情况下,如果用户尚未通过身份验证,它将发送WWW-Authenticate: Basic
标题。)
您可以设置AuthCompoment
的{{1}},但默认情况下(建议不要违反惯例)$loginAction
中的login
方法。因此,首先在UsersController
创建一个空模板,然后将以下内容添加到View/Users/login.ctp
UsersController