身份过期ajax不跳转登录页面,我如何执行经过身份验证的AJAX请求,而不重置Tomcat的会话超时?...

小编典典

我将使用Grails过滤器,该过滤器的功能类似于The-MeLLeR所建议的,而不会在所有会话中造成不必要的循环:

class AjaxTimeoutFilters {

int sessionTimeout = 30 * 60 * 1000

private static final String TIMEOUT_KEY = 'TIMEOUT_KEY'

def filters = {

all(controller:'*', action:'*') {

before = {

if (request.xhr) {

Long lastAccess = session[TIMEOUT_KEY]

if (lastAccess == null) {

// TODO

return false

}

if (System.currentTimeMillis() - lastAccess > sessionTimeout) {

session.invalidate()

// TODO - render response to trigger client redirect

return false

}

}

else {

session[TIMEOUT_KEY] = System.currentTimeMillis()

}

true

}

}

}

}

会话超时应注入依赖项,否则应与web.xml中的值保持同步。

剩下两个问题。一种情况是有一个Ajax请求,但是没有以前的非Ajax请求(lastAccess ==

null)。另一个是如何将浏览器重定向到登录页面,或者在30分钟无非Ajax活动后有Ajax请求时您需要去的地方。您必须呈现JSON或客户端会检查的其他响应,以知道它已超时并执行客户端重定向。

2020-06-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值