比较坑,使用spring security 的时候,由于使用了remmber-me 记住登陆功能,而且选择的是
PersistentTokenBasedRememberMeServices
来作为token保存service,存储token到数据库中
在开发环境中(windows,MacOs 都正常)部署一直都正常都可以写入到数据库中,但是部署到正式环境(Centos)就炸了写不进去。
后来用在正式服务器上开了tomcat 远程 debug,并断点到 PersistentTokenBasedRememberMeServices 就发现了里面出现异常了(妈蛋 我项目使用的log4j2,而spring 的是log4j ,不知道是不是 log4j2的配置,导致 log4j不会出书东西??),而且特么的不报日志,奇了怪了,断点后发现 是写数据库的时候出错了 说找不到 persistent_logins 表。
然后我就使用 其他的数据库工具连上mysql看下,发现是有表的,但是表名是PERSISTEN_LOGINS ,大写了。。
这下就猜到应该是大小写敏感了,
下面是修改方式:
需要改动 mysql配置文件
- 把表名全部改成小写
- 修改 /etc/my.cnf 中的 [mysqld]下的lower_case_table_names=1
- 重启 mysql
SpringSecurity Remember-Me 功能异常排查
本文介绍了一个关于SpringSecurity中Remember-Me功能在不同操作系统环境下出现的问题及解决方案。该问题表现为在Centos环境下无法将登录信息写入数据库,通过debug定位问题并最终发现是由于数据库表名大小写敏感导致。
3511

被折叠的 条评论
为什么被折叠?



