2014-01-20 51 views
0

我一直在CakePHP網站工作,幾乎完成,除了標題上的問題,我需要做的是重定向到一個頁面,如果用戶還沒有足夠的訪問級別可以繼續執行,並且如果您在地址欄中寫入url,但實際上效果不錯,但是當按下應該指向相同地址的按鈕時不會。CakePHP與ACL不重定向時沒有足夠的權限

這是我的AppController類

class AppController extends Controller { 
public $components = array(
    'Acl', 
    'Auth' => array(
     'authorize' => array(
      'Actions' => array('actionPath' => 'controllers') 
     ) 
    ), 
    'Session' 
); 
public $helpers = array('Html', 'Form', 'Session'); 

public function beforeFilter() { 
    //Configure AuthComponent 
    //debug($this->params,true); 
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); 
    $this->Auth->loginRedirect = array('controller' => 'posts', 'action' => 'add'); 
    $this->Auth->authError = "Error"; 
      if (isset($this->params['requested'])) $this->Auth->allow($this->action); 
} 

這是一個鏈接的例子來「添加」頁面,如果用戶不允許執行此操作時,應重定向到配置的頁面在我的AppController

<?php echo $this->Html->link($this->Html->image("add.png", array("alt" => "Agregar nueva encuesta","title" => "Agregar nueva encuesta")), 
     array('controller'=>'Surveys','action'=>'add',$beneficiary['Beneficiary']['id']), 
     array('escape' => false));?> 

因此,要明確,如果用戶寫地址,如果「MYSERVER /受益人/添加/參數」被重定向到一個表明他不能這樣做,操作的頁面,但他按下鏈接什麼也沒有發生,他不能添加任何東西,但我需要那個方向。

我將不勝感激任何意見。

我希望我的解釋很清楚,我的英語是遠遠不夠完善:)

編輯:

我決定跟隨用戶奔希區柯克的建議有關使用Web調試「查爾斯」。這是我得到

地址欄

請求 GET /項目/ SUISEPV2 /受益人/編輯/ 1 HTTP/1.1 主機本地主機 的User-Agent的Mozilla/5.0(Windows NT的6.3書面方式; WOW64; rv:26.0)Gecko/20100101 Firefox/26.0 接受text/html,application/xhtml + xml,application/xml; q = 0.9,/; q = 0.8 Accept-Language es-ES,es; q = 0.8,en-US; q = 0.5,en; q = 0.3 Accept-Encoding gzip,deflate Cookie CAKEPHP = 7399cvgls9gurk37ubes1fknf0 連接保持活動

Responde HTTP/1.1 302實測值 日期星期一,2014年1月20日16時54分56秒GMT 服務器的Apache/2.4.7(Win32的)的OpenSSL/0.9.8y PHP/5.4.22 X-Powered By PHP/5.4.22 Location myserver/Projects/SUISEPV2/posts/add Content-Length 0 Keep-Alive timeout = 5,max = 100 連接保持活動 Content-Type text/html;字符集= UTF-8

按下鏈路

請求: GET /項目/ SUISEPV2 /受益者/編輯/ 1 HTTP/1.1 主機本地主機 用戶代理的Mozilla/5.0(Windows NT的6.3; WOW64; rv:26.0)Gecko/20100101 Firefox/26.0 接受text/html,application/xhtml + xml,application/xml; q = 0.9,/; q = 0.8 Accept-Language es-ES,es; q = 0.8,的en-US; q = 0.5,連接; q = 0。3 接受編碼的gzip,放氣 Referer的MYSERVER /項目/ SUISEPV2 /受益人 曲奇的CakePHP = 7399cvgls9gurk37ubes1fknf0 連接保持活動

響應: HTTP/1.1 302實測值 日期星期一,2014年1月20日16時55分: 33 GMT 服務器Apache/2.4.7(Win32)OpenSSL/0.9.8y PHP/5.4.22 X-Powered-By PHP/5.4.22 Location myserver/Projects/SUISEPV2 /受益人 Content-Length 0 Keep-活動超時= 5,最大= 100 連接保持活動 Content-Type text/html; charset = UTF-8

不幸的是我仍然看不出有什麼問題。

+0

不應該鏈接'控制器'=>'受益人',而不是'控制器'=>'調查'? –

+0

在這種情況下,該按鈕的操作是向選定的受益人添加一項調查,但並不重要,即使我嘗試編輯或刪除用戶不允許執行的任何操作,問題也會發生。 – user3013960

+0

您可能會進入重定向循環。我試着運行Charles(Web代理)並檢查發送給服務器的內容,以及返回的內容。 –

回答

0

那麼我找到了一個解決方案,它比我想要的更好。

在我的佈局我加下一行

<?php echo $this->Session->flash('auth'); ?> 

,現在我可以顯示我在beforeFilter函數配置爲在AppController的類

$this->Auth->authError = "Custom error message here"; 

結果的消息是下列:

如果我按鏈接按鈕im沒有被重定向,但我得到一條消息,顯示我想告訴用戶。 如果我寫的地址我被重定向到錯誤頁面,我也收到了Flash消息。

相關問題