2012-08-23 51 views
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'); 

代碼工作可能聽起來很難看,但這就是升級! ;)

另外,我可以使用2.2.1中的$ this-> Auth->'auth properties',因爲它可能在1.3中嗎?

回答

1

像往常一樣,開始這樣的問題最好的地方是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 ?,答案是肯定的。你應該看看lib/Cake文件夾中的AuthComponent.php文件。它對你在這裏詢問的信息有很多評論。甚至有例子。

+0

嗯,這段代碼不是由我完成的。它給我一個更新。當我運行代碼時,它會返回500個錯誤,我將在重構代碼庫後解決這個錯誤,而重構則會遇到這種情況。我檢查了手冊和精神上我介於1.3和2.x之間(你明白了嗎?)。我遵循http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html以及您已經提供的手動鏈接。是的,use_acl也會讓我感到不安。所以底線,沒有什麼改變? – Karma

+0

設置Auth組件的方式沒有多大改變。但是,它處理認證的方式已經完全改變。手冊中有標誌描述了兩者的不同之處。也就是說,您需要在保存之前對您的密碼進行哈希處理,並且login()方法已更改。所以,你絕對需要改變你的應用來解決這個問題。但是,鑑於我們無法訪問整個應用中Auth組件的使用方式,因此不可能說您可以通過更改幾行代碼來解決問題。 –

+0

謝謝@Scott。目前我將面臨很多問題。但是,必須認真完成認證。 – Karma