Error Handler


Error 403: <h1>CHttpException</h1>

<p>You are not authorized to perform this action. (D:\xampp\htdocs\framework\web\auth\CAccessControlFilter.php:158)</p><pre>

#0 D:\xampp\htdocs\framework\web\auth\CAccessControlFilter.php(120): CAccessControlFilter->accessDenied(Object(CWebUser), 'You are not aut...')

#1 D:\xampp\htdocs\framework\web\filters\CFilter.php(39): CAccessControlFilter->preFilter(Object(CFilterChain))

#2 D:\xampp\htdocs\framework\web\CController.php(1144): CFilter->filter(Object(CFilterChain))

#3 D:\xampp\htdocs\framework\web\filters\CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain))

#4 D:\xampp\htdocs\framework\web\filters\CFilterChain.php(131): CInlineFilter->filter(Object(CFilterChain))

#5 D:\xampp\htdocs\framework\web\CController.php(283): CFilterChain->run()

#6 D:\xampp\htdocs\framework\web\CController.php(257): CController->runActionWithFilters(Object(CInlineAction), Array)

#7 D:\xampp\htdocs\framework\web\CWebApplication.php(277): CController->run('delete')

#8 D:\xampp\htdocs\framework\web\CWebApplication.php(136): CWebApplication->runController('ilan/delete')

#9 D:\xampp\htdocs\framework\base\CApplication.php(158): CWebApplication->processRequest()

#10 D:\xampp\htdocs\accessrules\index.php(13): CApplication->run()

#11 {main}</pre>

Genel olarak sorun :

Daha evelden ajax isteklerinde giriş izni olmayan bir istek olduğunda "sen yetkili değilsin" anlamına gelen bir yazı, ajax ile geliyordu. Ajax ile izinsiz girişlerde Default "site/error" olan yere hata gitmiyor.

Ayrıntılı olarak :

Bu ajax komutuda gridview üzerindeki delete fonksiyonu. Accessrules’a sadece belli koşuldan geçenler yapabilir dedim, koşul sağlandığında çalışıyor, sağlanmazsa mesaj sitecontroller/error tetiklemesi ve içindeki sadece “echo $error[‘message’];” kodu çalışması lazım ama yukarıdaki verdiğim mesajı veriyor. Oda Firefox da koskoca bir mesaj penceresi olarak çıkıyor.

Normal Url ile yolu yazıp çalıştırdığımda delete fonksiyonuna izin olmadığı için normal bir hata mesajı geliyor . Ajax olunca, hata olduğu bilgisi site/error kısmını hiç tetiklemiyor.

Nasıl tetikletirebilirim yada alternatif olarak neler olabilir ?

Acaba

site/error içerisinde isAjaxRequest fonksiyonu kullanıyormusun

Bende herhangibir hata çıkmıyorda :slight_smile:

Ben de onu anlayamadım. Eskiden ajax ile girmek istediğim yere girerken, firebug’dan takip ediyordum ajax’a mesaj olarak yetkin yok diyordu. Bu yazı alttan gelmesine rağmen GridView’da hiç bir mesaj vermiyordu.

Bir yerde bir yanlış mantık oluşturdum heralde artık direk boş mesaj geliyor. Yii nin kendi accessrule classına girdim deneme olarak baktığımda "throw error" yapıyor ama sitecontroller hatayı yakalayamıyor. Bunun sonucunda da gridview içerisinde error loglarının bulunduğu yukarda verdiğim bir mesajı, otomatik olarak "alert" ediyor. Çözüm alternatif bir şekilde buldum ancak eski haliyle ajax errorları yakalasa hiç bunlara gerek kalmicaktı.

Acaba senden ricam yii’nin kendi webapp kullanarak ufak bir uygulama yapabilir misin ?

İki tane veri ekle. Sonra sadece şu expression dan geçenler girebilsin de. Koşulu 1 == 0 diye yaz mesela.


array('allow',

				'actions'=>array('delete'),

				'users'=>array('@'),

				'expression'=>"1==0",

			),



Normal delete ile girmeye çalıştığında hata sayfası ne yaptıysan o gelicektir.

Ama gridview üzerinden delete diyince ne gelicek çok merak ediyorum.

bu galiba senin aradığın

http://www.yiiframework.com/wiki/228/display-a-nice-exception-message-on-ajax-requests/ incelermisin

Bu sorun bende ilk çıktığında araştırdım çözüm bulamadım, buraya konuyu açtım olmadı. Sonrasında yolladığın yazıyı yazan adama pm ile 12 Ağustos tarihinde mesaj attım. O zaman hiç yardımcı olmadı. Şimdi kendisi bu sorun üzerinden yazı yayınlamış ilginç :) İncelim bakim teşekkür ederim.

Garip :-).

Üretmiş olmak istiyor galiba . garip