2010-03-08 27 views
6

Auth ve ACL bileşenleriyle CakePHP kullanıyorum. Sayfam kayıtlı olmayan kullanıcılar için iyi bir şekilde yükleniyor, ancak kayıtlı bir kullanıcı olarak giriş yapmayı denediğimde tarayıcıda sonsuz bir yeniden yönlendirme döngüsü elde ediyorum.Tarayıcı Yönlendirme Döngüsünde Hata Ayıklama

Bunun bir çeşit izin sorunu olduğundan eminim, ancak sorun her şey için izinleri olan kullanıcılar için bile geçerlidir. Bu davranışı önlemenin tek yolu, AppController'ın beforeFilter yöntemimde '*' olmasına izin vermektir.

Bu tür bir hata ayıklamanın en iyi yolu nedir?

Teşekkürler!

cevap

10

ayıklama amacıyla, senin AppController::beforeFilter() bu ilk şey takmadan deneyin: Bu /app/tmp/logs/debug.log yılında günlüğüne yazacak

$this->log("Here: {$this->here}, coming from: " . $this->referer(), LOG_DEBUG); 

. Ayrıca AppController yılında yönlendirme yöntemi geçersiz ile birleştirmek olabilir:

function redirect($url, $status = null, $exit = true) { 
    $trace = debug_backtrace(); 
    $this->log("Redirecting to: " . Router::url($url) . ", initiated in {$trace[1]['file']} on line {$trace[1]['line']}", LOG_DEBUG); 
    parent::redirect($url, $status, $exit); 
} 
+1

Bu tam olarak aradığım şey. Teşekkürler! –

1

Kontrol edeceğim ilk şey, Kullanıcı denetleyicisinin oturum açma yöntemidir. Doğru şekilde uygulandığında, genellikle doğrulanmamış/onaylanmış tüm trafiği oturum açma denetleyicisine yönlendirirsiniz. Ancak, halka izin vermediyseniz, büyük olasılıkla sonsuz bir döngü ile sonuçlanır. Bu yüzden app_controller'ı (veya Auth/ACL izinlerini sakladığınız her yerde) kontrol edin ve Users.login'in herkese açık olduğundan emin olun.

2

Ayrıca doğru size app_controller içinde Auth bileşenin ayarları üzerinde kontrol etmenizi kurulum emin olun.

http://book.cakephp.org/1.3/en/The-Manual/Core-Components/Authentication.html#setting-auth-component-variables

açıkça hepsini tanımlamak eğilimindedir. Belki de böyle bir şey kontrol edin, http://www.webdevelopment2.com/cakephp-auth-component-tutorial-1/ Sadece tüm kurulum doğru olduğundan emin olmak için. Bulduğum

başka şey, bazen beforeFilter() bazen o kadar belki app_controller en beforeFilter() olduğundan emin olmak için

parent::beforeFilter(); 

sahip denetleyicileri denemek, senin app_controller içinde Auth kurulumunu nakavt edebilir olduğunu yürütülür.