问题描述
|
如果用户已登录,则ajax请求可以正常工作。当会话无效时,ajax返回登录屏幕,用户可以将登录屏幕视为ajax内容。是否可以在Ext Js中添加自定义代码,该代码将在每个ajax请求中运行,以检查会话是否仍然有效,如果会话无效,则JavaScript将重定向到登录页面,否则它将继续正常执行Ajax请求。
解决方法
Ext.ajax是单例,因此您可以为所有请求错误定义全局处理程序。
如果未授权用户,则服务器端代码将需要返回HTTP 403或类似信息。将其放在您的代码中(仅一次):
Ext.Ajax.on(\'requestexception\',function(conn,response,options) {
if (response.status == 403) {
Ext.MessageBox.alert(\'Authentication\',\'You are not logged in.\');
/* you can display a login box or something here */
}
};
如果AJAX请求由于会话已过期而失败,则可以在代码中优雅地处理它。
options参数包含AJAX请求选项,因此,如果为用户提供一个登录框并重新进行身份验证,则可以重新提交他们自动发出的原始AJAX请求。该过程对于进行AJAX请求的所有其余现有代码应该是无缝的。
,应该在服务器中检查会话是否仍然有效。不在JavaScript中。
我们不信任客户。
,您可以通过两种方式修改ajax流程:
1-服务器端:接收请求后,检查会话-如果用户未登录或会话过期,则返回HHTP 403(=未授权)。
2-客户端:作为ajax响应处理程序的一部分,检查错误403。如果返回错误,则要求登录并将其发送到服务器,然后在登录成功后重新发送原始请求。
如果您不使用太多现成的ajax库,那很容易。如果是这样,请查看其功能。