`

org.apache.shiro.session.UnknownSessionException

阅读更多
问题说明:
  • 背景:系统登录,原允许用户名、手机号码、邮箱三者之一加密码进行登录,故在注册时严格限制注册用户名不能以数字开头,避免用户名与手机号码区分不开,即造成从数据库读取数据时出错的问题
  • 问题:刚刚接手,不了解之前的业务逻辑以及注册限制,且现在取消了手机号码以及邮箱登陆,导致用一串数字注册用户名时没有进行限制,注册成功了,但登录时报错




原因:
  • 用户名为一串数字,调用底层接口根据用户查询相应用户信息时误将其作为手机号码进行查询,结果为空,抛出异常
  • 根据新的业务逻辑,此处不仅仅是登陆逻辑,而要判断账号所关联的商户的审核状态,故若用户登录后,依然要判断其审核状态,若不符合登陆要求,强制其推出登录


处理过程:
1.session过期时间太短,导致session过期找不到session报错,

这里org.apache.shiro.web.session.mgt.DefaultWebSessionManager设置session时间
globalSessionTimeout时间太短 这个单位是毫秒,建议设置长点时间

2.时间修改长后,还是报错,但是可以执行  SecurityUtils.getSubject().logout();程序执行到return "index";报错

logout可以安全正确退出,session也可以删除,授权信息,认证信息也会被清除(debug进去可以看到的)

但是如果直接return就会报错

3.DEBUG方式

org.apache.shiro.session.UnknownSessionException: There is no session with id
debug进去发现,直接return程序还是会查找你刚才logout的sessionId,因为logout了,当然是找不到session了,理所当然报错

解决方法:

1.修改查询账户信息接口

兼容用户名为数字时的情况

注:公共调用接口,不可改动太大,尽量兼容,避免其他调用接口的位置报错

2.解决报错问题

将原有跳转页面处理改为跳转redirect

@Result(name = ERROR, params = {"flag", "${flag}"}, type = ResultTypeConstants.REDIRECT, location = "/loginpage.do")


其中:flag为原有页面中登陆错误信息标志位

参考文献:http://www.360doc.com/content/14/0730/14/11298474_398125873.shtml#
  • 大小: 296.9 KB
分享到:
评论

相关推荐

    shiro-crypto-hash-1.4.0-API文档-中文版.zip

    Maven坐标:org.apache.shiro:shiro-crypto-hash:1.4.0; 标签:apache、shiro、crypto、hash、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性...

    shiro-cache-1.4.0-API文档-中英对照版.zip

    Maven坐标:org.apache.shiro:shiro-cache:1.4.0; 标签:apache、shiro、cache、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,...

    Apache Shiro核心jar包:shiro-core-1.3.2

    Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

    jedis-3.3.0.jar

    at org.apache.shiro.session.mgt.eis.CachingSessionDAO.getActiveSessions(CachingSessionDAO.java:345) at com.ehr.security.shiro.SystemAuthorizingRealm.doGetAuthenticationInfo(SystemAuthorizingRealm....

    shiro-crypto-hash-1.4.0-API文档-中英对照版.zip

    Maven坐标:org.apache.shiro:shiro-crypto-hash:1.4.0; 标签:apache、shiro、crypto、hash、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    shiro连接redis集群 根据org.crazycake.shiro包改造源码

    shiro连接redis集群 根据org.crazycake.shiro包改造而成源码

    shiro 1.4.0所有jar包(全)

    Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

    org.apache.aries.jax.rs.shiro.authz-1.1.0.pom

    Aries项目正在提供一组可插入的Java组件,以支持企业OSGi应用程序编程模型。 这包括由OSGi联盟企业专家组(EEG)定义的以应用程序为中心的规范的实现和扩展,以及用于多捆绑应用程序的组装格式,以便将其部署到各种...

    java head space.txt

    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at ...

    org.apache.aries.jax.rs.shiro.authz-1.1.0.jar

    Aries项目正在提供一组可插入的Java组件,以支持企业OSGi应用程序编程模型。 这包括由OSGi联盟企业专家组(EEG)定义的以应用程序为中心的规范的实现和扩展,以及用于多捆绑应用程序的组装格式,以便将其部署到各种...

    shiro.freemarker.ShiroTags已打包

    com.jagregory.shiro.freemarker.ShiroTags 已经打包过的权限标签,可直接使用

    shiro-all jar

    org.apache.shiro org.apache.shiro.aop org.apache.shiro.aspectj org.apache.shiro.authc ......

    shiro-web-1.3.2.jar包

    Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。

    shiro所有jar包

    shiro所有jar包 集成spring用到的 shiro所有jar包 集成spring用到的 shiro所有jar包 集成spring用到的 shiro所有jar包 集成spring用到的

    shiro jar包及源码下载

    shiro权限验证jar包及源码 shiro-1.3.2jar包及源码下载

    springboot+mybatis+shiro的电商书城系统.zip

    springboot+mybatis+shiro的电商书城系统.zipspringboot+mybatis+shiro的电商书城系统.zipspringboot+mybatis+shiro的电商书城系统.zipspringboot+mybatis+shiro的电商书城系统.zipspringboot+mybatis+shiro的电商...

    Shiro Realm 权限的验证流程和缓存机制.docx

    org.apache.shiro.spring.config.web.autoconfigure.ShiroWebAutoConfiguration @Bean @ConditionalOnMissingBean @Override protected AuthenticationStrategy authenticationStrategy() { return super....

    shiro-lang-1.4.0-API文档-中文版.zip

    Maven坐标:org.apache.shiro:shiro-lang:1.4.0; 标签:apache、shiro、lang、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    shiro-core-1.4.0-API文档-中文版.zip

    Maven坐标:org.apache.shiro:shiro-core:1.4.0; 标签:apache、shiro、core、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...

    shiro入门学习demo源码

    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="loginUrl" value="/login.html" /> <property name="successUrl" value="/loginsuccess.html" /> ...

Global site tag (gtag.js) - Google Analytics