Jeśli potrzebujesz tego tylko do rozpoznania, kiedy użytkownik nie jest uwierzytelniony, możesz rozważyć zrobienie czegoś innego. Jak dodanie obsługi Ajax pojedyncza:
function addAjaxErrorHandler(object) {
Ext.Ajax.on('requestexception', function(conn, response, options, e) {
var statusCode = response.status,
errorText = null,
captionText = response.statusText;
// 404 - file or method not found - special case
if (statusCode == 404) {
Ext.MessageBox.alert('Error 404', 'URL ' + response.request.options.url + ' not found');
return;
}
if (response.responseText != undefined) {
var r = Ext.decode(response.responseText, true);
if (r != null) {
// 401 - not authenticated. For some reason we don't have authentication cookie anymore
if (r.ErrorCode == 401) {
Ext.MessageBox.alert('Error', 'You must log in to use application',
function() {
// do something when user is not authenticated
object);
return;
}
errorText = r.ErrorMessage;
}
if (errorText == null)
errorText = response.responseText;
}
if (!captionText)
captionText = 'Error ' + statusCode;
Ext.MessageBox.alert(captionText, errorText);
},
object);
}
Następnie wystarczy wywołać tę funkcję z application.launch function() i przekazać obiekt aplikacji tak zakresem jeśli zdefiniowane.
Dlaczego chcesz zastąpić połączenie, aby wyświetlić dokładnie formularz logowania? przedstawić użytkownikowi formularz logowania, jeśli nie jest on uwierzytelniony? – sha
Dokładnie. A także jeśli limit czasu sesji. –
Dodałem obsługę globalną błędów Ajax i przeanalizowałem tam nieuwierzytelnione błędy. Może to coś, co będzie ci odpowiadać. – sha