代码之家  ›  专栏  ›  技术社区  ›  Keval Domadia Dimag Kharab

cakephp 2.2.1(稳定)中$this->auth->authorize(cakehp1.3)有什么变化?

  •  1
  • Keval Domadia Dimag Kharab  · 技术社区  · 12 年前

    我正在将一个应用程序从CakePHP 1.3升级到CakePHP 2.2.1。

    我们正在实现ACL,我在AppController中看到

    if (isset($this->Auth)) {
                if ($this->use_acl) {
                    $this->Auth->authorize = 'actions';
                }
    

    作为一个变量声明,我已经对以下内容进行了更改:

    var $components = array(
            'Auth' => array(
                'authenticate' => array(
                    'Form' => array(
                    'fields' => array('username' => 'email', 'password' => 'password')
                    )
                ),
                'loginAction' => array(
                    'admin' => false, 'prefix' => false, 'controller' => 'users', 
                    'action' => 'login')
            ),
            'Session', 'Facebook.Connect');
    

    是否仍需要我保留:

    $this->Auth->loginAction = array('admin' => false, 'prefix' => false, 'controller' => 'users', 'action' => 'login');
    

    代码工作可能听起来很难看,但升级就是这样!)

    此外,我可以使用$this->身份验证->'身份验证属性'在2.2.1中是可能的,就像在1.3中一样?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Scott Harwell    12 年前

    像往常一样,开始回答这样的问题的最佳地点是 the manual 。然后,发布测试结果,而不是代码和一个宽泛的问题。

    也就是说,您发布的第一块代码看起来像您端的自定义变量 $this->use_acl 。我从未在CakePHP中使用过,所以在你的应用程序中有一些标记你的设置,以使用“操作”。

    第二块代码看起来相当标准。它应该起作用。是的,您仍然需要指定登录操作,这样当用户试图导航到受保护的页面时,他/她将被重定向到登录。也就是说,正如上面的手动链接中所指出的,登录过程存在差异。您应该看看密码何时散列和login()函数本身的差异,因为它们都发生了变化。就两个版本之间的身份验证差异而言,使用ACL的事实应该无关紧要。

    你的最后一个问题 Also, can I use the $this->Auth-> 'auth properties' in 2.2.1 as it was possible in 1.3 ? ,答案是肯定的。你应该看看 AuthComponent.php lib/Cake文件夹中的文件。它对你在这里询问的信息进行了大量评论。甚至还有一些例子。