Spring Boot项目集成Shiro和CAS时认证失败问题解决 -- 知识铺
项目场景:
项目采用spring boot+shiro+cas配置,由于数据库原因,登录时认证失败,记录一下解决过程。
问题描述:
cas验证用户成功后,到shiro自定义的realm中执行doGetAuthenticationInfo方法时,抛出NullPointerException异常,异常信息如下:
|
|
原因分析:
数据库因素:
导致shiro登录认证失败的因素有很多,但其实数据库占很大一部分原因,检查一下数据库是否启动,连接配置是否正确,mabatis的mapperxml配置文件写错是否写错等;
根据报错信息NullPointerException:null,判断大概是因为未查询到数据导致,分为两种情况:
1、根据用户名或登录名未查询到密码导致,shiro登录认证是先根据用户名或登录名查询出用户的账号密码等信息保存到SimpleAuthenticationInfo中,试图登录的用户信息保存到UsernamePasswordToken中,然后进行对比,没有密码肯定报错。
2、数据库没有此用户,查询不到用户。
解决方案:
数据库添加:
1、查询的sql语句结果中添加密码字段;
2、在进行根据用户名或登录名查询登录用户之前添加用户信息,数据库添加用户后,认证成功,错误解决。
|
|
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240428/Spring-Boot%E9%A1%B9%E7%9B%AE%E9%9B%86%E6%88%90Shiro%E5%92%8CCAS%E6%97%B6%E8%AE%A4%E8%AF%81%E5%A4%B1%E8%B4%A5%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com