其他错误:org.apache.shiro.authc.AuthenticationException
来源:互联网 发布:vb.net web开发教程 编辑:程序博客网 时间:2024/06/05 13:30
前言
博主今天遇到了一个惊天大bug!原本我的代码是没有问题的,但是当我把mybatis的数据库连接配置从本地改为远端测试库之后,登录便会报错。使用Navicat可以远程连接数据库!mybatis的连接配置也没有问题,Tomcat服务器可以正常启动!项目框架是spring+spring MVC+mybatis。
一、登录账号报其他错误:org.apache.shiro.authc.AuthenticationException
网上查询资料很多是说身份验证或者权限校验等等有问题。但是博主敢肯定我的代码是没有问题的,因为使用本地库的时候能够正常操作!所以身份验证和权限校验等配置不会有问题。
二、控制台报错
由于不确定是不是登录的时候执行语句有问题,所以我将查询语句打印在控制台。要在mybatis的configuration.xml配置文件中加上<setting name="logImpl" value="STDOUT_LOGGING" />
,这样sql语句就能在控制台显示出来。
可以看到报错有两个,我对这两种报错都进行了查询
1.报错:SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7f81277b] was not registered for synchronization because synchronization is not active
参考这篇博客,有人说是com.alibaba.druid 连接池引起的,版本问题。正好下面一行报错就是关于com.alibaba.druid 连接池的。
2.报错: [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@d587fe4] will not be managed by Spring
参考这篇博客,有人说是Spring没有去管理数据库的事务,但是我用本地库都是正常的,所以spring或者spring MVC的配置都是正确的。
既然这两条报错信息的解决办法都不是我想要的,那么接着往下看控制台的打印语句,是sql语句。完整的sql语句是: ==> Preparing: select USER_ID as userId, USER_NAME as username, PASSWORD as password, ADMINISTRATOR as administrator, PASSWORD_CHANGED as passwordChanged from T_SC_ADMIN_USER WHERE USER_NAME = ?
==> Parameters: admin(String)
但是在输入admin参数进行查询之后竟然关闭了会话!正常的查询结果应该如下:
<== Columns: userId, username, password, administrator, passwordChanged<== Row: 1, admin, e10adc3949ba59abbe56e057f20f883e, 1, 1<== Total: 1
问题到了这里就比较明了了,应该是sql查询出现了问题。我将那行select语句放入Navicat里,将‘admin‘替换?,进行查询,结果是[Err] 1146 - Table '数据库.T_SC_ADMIN_USER' doesn't exist
(默认在表前加上了数据库名称,不知为何)。也就是说我的表不存在,但那是不可能的!我的数据库中有t_sc_admin_user这张表,唯一的区别就是大小写。我将表名改成小写,查询成功!又测试了其他几条sql语句,结果一样!大写出错,小写成功。
现在问题已经找到了,就是表名大小写造成的。使用mysql的表名/字段名/字段值是否区分大小写这篇博客里的方法,在Navicat分别在本地库和远端库的新建查询运行show Variables like '%table_names'
语句,得出的结果分别是1和0。也就是说我本地数据库是不区分大小写而远端库是区分大小写的。我去问了建远端库的同事,由于是在Linux上建立的,所以默认是区分大小写。到现在,问题解决了,就是MySQL数据库区分了大小写导致查询失败!,只需要把远端库修改成不区分大小写就可以了。
结语
有的时候运行代码报错并不一定是报错语句的那个意思,需要找到更深层的原因。像这里报错是org.apache.shiro.authc.AuthenticationException,但其实是登录的时候查询语句出错,而出错原因则是MySQL数据库区分大小写。
- 其他错误:org.apache.shiro.authc.AuthenticationException
- Shiro:org.apache.shiro.authc.AuthenticationException
- Shiro:org.apache.shiro.authc.AuthenticationException
- org.apache.shiro.authc.AuthenticationException: Authentication failed for token submission
- org.apache.shiro.authc.IncorrectCredentialsException 异常处理
- shrio,org.apache.shiro.authc.UsernamePasswordToken
- org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.sh
- org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.s
- shiro的org.apache.shiro.UnavailableSecurityManagerException错误
- Apache Shiro [urls]中配置的roles, perms, authc这样的filterChain的执行过程解析
- Shiro AuthenticationException 身份认证异常
- shiro报错org.apache.shiro.UnavailableSecurityManagerException
- org.apache.shiro.authz.AuthorizationException
- 执行Shiro logout后,报如下错误: org.apache.shiro.session.UnknownSessionException: There is no session with id
- org.apache.shiro.SecurityUtils.getSubject().getSession()
- org.apache.shiro.cache.cacheException异常
- AuthenticationException
- shiro之org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible
- Scala IDE中建立工程项目
- eclipse对接Tomcat
- HDU 3726 Graph and Queries 离线处理 treap + 并查集
- 最简短的js代码实现tab选项卡效果
- myeclipse2017破解
- 其他错误:org.apache.shiro.authc.AuthenticationException
- 框架整合——Spring与SpringMVC框架整合步骤与优势讲解
- ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践
- UNIX环境编程学习笔记(18)——进程管理之进程控制三部曲
- 微信公众号开发
- 安装python
- QListView 添加右键菜单
- USB Audio (UAC) 简介
- Ajax中POST和GET的区别