1

我正在将应用程序从 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');

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

另外,我可以像在 1.3 中那样在 2.2.1 中使用 $this->Auth-> 'auth properties' 吗?

4

1 回答 1

1

像往常一样,开始处理此类问题的最佳位置是手册。然后,发布您的测试结果,而不是您的代码和一个广泛的问题。

也就是说,您发布的第一个代码块看起来像您 end 的自定义变量$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.phplib/Cake 文件夹中的文件。它对您在此处询问的信息进行了大量评论。甚至还有例子。

于 2012-08-23T06:23:51.060 回答