shiro登陆超时的问题

问题描述

项目中登陆用到了shiro验证框架,session超时,shiro默认会迁移到登陆画面。现在想session超时想弹出一个对话框,不知该如何解决。<bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <property name="sessionDAO" ref="sessionDAO"/> <property name="globalSessionTimeout" value="30000"/> <property name="sessionListeners" ref="dmpSessionListener"/> </bean> <bean id="dmpSessionListener" class="com.pactera.platform.reqm.web.util.DmpSessionListener"/> public class DmpSessionListener implements SessionListener{@Overridepublic void onStart(Session session) {// TODO Auto-generated method stubSystem.out.println("onStart");}@Overridepublic void onStop(Session session) {// TODO Auto-generated method stubSystem.out.println("onStop");}@Overridepublic void onExpiration(Session session) {// TODO}}查了一下,有个监听session超时的方法,可是监听到应该怎样弹对话框呢,前台开发不熟悉。请大家赐教。

解决方案

这里不是使用监听 思路都一样,简单说下:如果你使用的是FormAuthenticationFilter,那么继承FormAuthenticationFilter覆盖onAccessDenied方法,方法实现: if (isLoginRequest(request, response)) { if (isLoginSubmission(request, response)) { return executeLogin(request, response); } else { return true; } } else { if(AjaxUtils.isAjaxRequest(WebUtils.toHttp(request))){ HttpServletResponse res = WebUtils.toHttp(response); res.sendError(HttpServletResponse.SC_UNAUTHORIZED); }else{ redirectToLogin(request, response); }// saveRequestAndRedirectToLogin(request, response); return false; }然后前台设置ajax全局状态码处理 捕获401,给出提示或做进一步处理资源权限和角色权限同样可以使用这种方式!我想我说的够清楚了!
解决方案二:
首先,完全没有必要给这个提示,你想想,如果用户打开了10个页面,session过期了,10个窗口都会弹出这个,用户要关闭弹出框10次,体验度太差了。我是到现在都没见过有网站会这样弄的。你顶多在页面跳转到登录之前给他个超时的提示。
解决方案三:
在页面上记录一个时间, 然后用javascript去判断, 如果session失效时间快到了, 用户还没和server交互过,那就弹出一个对话框.<div id="demo"></div><script> var sessionTime=5; var intvalue=1; function start(){ intvalue ++; document.getElementById("demo").innerHTML="&nbsp;" + Math.floor(((sessionTime-intvalue)/60)).toString()+"分"+((sessionTime-intvalue)%60).toString()+"秒"; if(intvalue>=sessionTime){ end(); } } function end(){alert("时间到了!!");window.location.href="http://www.baidu.com"; }window.setInterval("start()",1000);</script>

时间: 2025-01-01 16:11:46

shiro登陆超时的问题的相关文章

解析如何修改php myadmin中的默认登陆超时时间

登录后1440秒未活动后总是自动退出,一天还要登录多次,终于有时间来解决这个问题了,感觉是session超时,结果在网上search了下,找到解决办法啦,哈哈哈,在此做个笔记: phpmyadmin在使用过程中经常出现"登陆超时(1440秒未活动),请重新登录",很烦解决方法如下:修改php.ini,找到session.gc_maxlifetime = 1440将数值改大就行了,然后使之生效 试验了一下,结果不好使.最终解决方案:找到 phpMyAdmin / libraries /

解析如何修改phpmyadmin中的默认登陆超时时间_php技巧

登录后1440秒未活动后总是自动退出,一天还要登录多次,终于有时间来解决这个问题了,感觉是session超时,结果在网上search了下,找到解决办法啦,哈哈哈,在此做个笔记:phpmyadmin在使用过程中经常出现"登陆超时(1440秒未活动),请重新登录",很烦解决方法如下:修改php.ini,找到session.gc_maxlifetime = 1440将数值改大就行了,然后使之生效试验了一下,结果不好使.最终解决方案:找到 phpMyAdmin / libraries / co

phpMyAdmin登陆超时1440秒未活动请重新登录

问题现象:现象一:phpmyadmin在使用过程中经常出现"登陆超时(1440秒未活动),请重新登录": 现象二:phpmyadmin 里会出现: 您的 PHP 配置参数 session.gc_maxlifetime (外链,英文) 短于您在 phpMyAdmin 中设置的 Cookies 有效期,因此您的登录会话有效期将会比您在 phpMyAdmin 中设置的时间要更短. 的错误提示. 解决方法: 修改php.ini,找到  代码如下 复制代码 session.gc_maxlifet

shiro登陆跳转不到根目录

问题描述 <!--基于Form表单的身份验证过滤器--><beanid="formAuthenticationFilter"class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"><propertyname="usernameParam"value="username"/><propertyname=&quo

关于Shiro登陆退出遇到的一些问题

写在开始 最近项目中出现一些问题,以前可能不大关注,但是问题是实实在在存在的. 问题一 系统重启用户登陆或者退出报错:Disk Write of 407a1347-c2c6-434e-89e3-365aa277497c failed 这个问题,并不是经常出现,看详细错误信息,应该是数据 list或者map序列化的问题.看了一下实体类都实现了序列化. 解决方案 突然想起,以前是没有这个问题的,自从升级了Ehcache的jar包,这个问题时常出现.目前使用的是ehcache2.10.0,随后版本降级

商城分销后台登陆超时问题

问题描述 解决方案 解决方案二:调试一下看是什么地方超时了,然后再解决!解决方案三:是什么东西超时了啊,验证信息,还是服务处理解决方案四:我这个是二开的没办法调试呀~超时问题都处理过还是不管事后来认为是不是服务器占用程序池问题类的问题重新创建默认程序池也不行我们这是做商城的一个服务器好几十个站总是有时候不间断的出现这个问题这个好了那个又不行了客户们闹得都烦了唉解决方案五:是分销后台登陆的时候超时现在又出现了操作商品管理时候超时都是这么个问题解决方案六:求各位大神们给研究个解决方案感激不尽啊解决方

Shrio登陆验证实例详细解读(转)

    摘要:本文采用了Spring+SpringMVC+Mybatis+Shiro+Msql来写了一个登陆验证的实例,下面来看看过程吧!整个工程基于Mavevn来创建,运行环境为JDK1.6+WIN7+tomcat7. 这里主要说了Shiro的搭建过程,Spring+SpringMVC+Mybatis的搭建过可以看这里Spring+Mybatis+SpringMVC+Maven+MySql搭建实例 整体工程免费下载:http://download.csdn.net/detail/evankak

pl sql-oracle 11g 64位plsql登陆问题

问题描述 oracle 11g 64位plsql登陆问题 我用myeclipse创建了web应用并且用jdbc驱动创建数据库连接,兵配置好监听器和tnsname,当我在doc界界面启动数据库和监听器后一切正常,tnsping 服务名也可以通过,但是登陆plsql出现登陆超时错误,sqlplus 登录名/密码@服务名出现TNS:监听程序无法分发客户机连接.在myeclipse上想测试连接 Connection conn=DButils.getInstance().getconn(); System

QQ登录超时错误码:0x00000001 问题几种解决办法

其实登录QQ登录不上提示错误0x00000001代码,基本上是电脑中没头网络造成的,解决办法参考以上介绍.这里再介绍下很少可能产生的原因,如果网络可用QQ登录不了,请参考以下方法解决. 问题原因 1.电脑无法正常访问互联网,也就是人们常说的你的电脑断网了. 2.QQ版本过于陈旧.虽然QQ版本过低是会有版本过低的提示,但是QQ在每一次升级是不能保证对之前发布的所有版本进行100%识别,因此,在某些时候(如某业务升级)存在因为版本过低不兼容导致登陆超时的可能. 3.腾讯(QQ所在的公司)的登陆服务器