Spring Boot的Shiro问题
1.Unable to execute ‘doFinal’
Delegate RememberMeManager instance of type [org.apache.shiro.web.mgt.CookieRememberMeManager] threw an exception during getRememberedPrincipals().
org.apache.shiro.crypto.CryptoException: Unable to execute ‘doFinal’ with cipher instance [Cipher.AES/GCM/NoPadding, mode: decryption, algorithm from: SunJCE].
这个问题有点奇怪,但是清空一下浏览器缓存就可以了。
2.跨域问题
今天我可能不适合编写代码,无论是跨域还是shiro验证,我不断的尝试,不断的清空浏览器,还是出现跨域问题。但是我根据参考文章3,进行了OPPTION方法的过滤,调通了。等我再次把相关代码注释掉之后,以前不可以的问题,现在就算不添加OPPTION方法过滤,也可以通过验证了。简直就是让人抓狂啊。但是还是记录一下问题吧。
(1) 编写过滤器
1 | public class FormLoginFilter extends PathMatchingFilter { |
(2) 将过滤器注入到shiroFilterFactoryBean中
上面是过滤器,然后讲过滤器注入到shiroFilterFactoryBean中
1 | //配置shrio拦截器 |
(3) 设置ajax请求携带withCredentials
前台的ajax记得使用全局配置withCredentials
1 | //设置全局ajax请求头 |
1.Shiro-实战(四)—过滤器机制
2.Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
3.shiro学习分享(三)——解决跨域问题时遇到的坑 (这篇文章给了启发和灵感)
4.jquery的ajax全局配置
5.jQuery.ajaxSetup 全局设置ajax的header等配置信息
6.JQuery Ajax 全局设置配置方法 (jquery全局配置方法,可以参考这个文章)