Ajax ile çalışan sitelerde, oturum süresi dolduğu zaman kullanıcı ajax yanıtlarında hiç bir işlem yapılmadı gibi sonuç görmektedir.
Yii framework tabanlı web sitelerinde bu soruna çözüm olarak ben aşağıdaki yöntemi kullanıyorum:
– main config’den user kısmında Yii FW’nin döndüğü ajax login gerekli mesajını aşağıdaki gibi değişiriyoruz:
'components'=>array( ... 'user'=>array( 'loginRequiredAjaxResponse'=>'{"loginRequired":true,"loginReqText":"LOGIN_REQUIRED"}', ), ... )
– şimdi sunucudan gelen tüm ajax yanıtlarının bunun bir login mesajı olup olmadığını kontrol eden aşağıdaki Javascript kodunu main layout sayfamıza ekliyoruz:
/** * Handler which redirects session-expired users to login after ajax requests. * @require user->loginRequiredAjaxResponse * @author Erman Gülhan * @date 06.06.2013 */ $(function(){ $('body').ajaxComplete( function(event,request,options){ if(request.responseText!==undefined){ var respond=$.parseJSON(request.responseText); if(respond!==null && respond!==undefined && respond.loginRequired) { //window.location.href = options.url; window.location.reload(true); } } } ); });
Hepsi bu kadar. Kolay gelsin.