如果用户已登录,则ajax请求可以正常工作。当会话失效时,ajax返回登录屏幕,用户可以将登录屏幕视为ajax内容。是否可以在Ext Js中添加自定义代码,每个ajax请求都会运行,以检查会话是否仍然有效,如果会话无效,则JavaScript将重定向到登录页面,否则它将继续正常执行Ajax请求。
答案 0 :(得分:2)
Ext.ajax是一个单例,因此您可以为所有请求错误定义全局处理程序。
如果用户未获得授权,您的服务器端代码将需要返回HTTP 403或simmilar。把它放在代码中的某个地方(只有一次):
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请求的所有其他现有代码,该过程应该是无缝的。
答案 1 :(得分:1)
检查会话是否仍然有效应在服务器中完成。不是在JavaScript中。
我们不信任客户。
答案 2 :(得分:0)
您可以通过两种方式修改ajax流程:
1-服务器端:收到请求后,检查会话 - 如果用户未登录或会话已过期,则返回HHTP 403(=未授权)。 2-客户端:作为ajax响应处理程序的一部分,检查错误403.如果返回,请求登录并将其发送到服务器,然后在登录成功后,重新发送原始请求。
如果你没有使用太多现成的ajax库,这很容易。如果是,请查看其功能。