在解决方案一中解决了iframe session超时跳转到登录页问题,但是第二个问题来了,超时登陆后,出现直接跳转到了iframe的内容页,翻看了shiro官方文档,意思是shiro默认记住了超时登录之前的url放到了shiro自己的session内,当重新登录后,会获取session中的url,然后跳转过去,解决每次超时都跳转到首页的问题。
但是咱们的问题是他每次超时跳转都直接跳转到了iframe的内容页 导致左侧菜单没有了,所以咱的思路就是要在他登录后让他跳转到首页,而不跳转到详细页。
根据官方wiki 我发现在shiro的webUtils工具类中有这样一个方法,源码如下:
此方法会获取当前session中的请求并清理掉。
我们可以重写FormAuthenticationFilter的onLoginSuccess方法,我在做验证码登录的时候已经重写filter,所以在此只要借用之前代码重新onLoginSuccess方法即可,代码如下:
我在验证码校验的文章中已说明filter具体配置方式,此处略过。
将session超时时间设置为60秒
启动boot项目
等一分钟,点击菜单,进入登录页登录,登陆成功后直接进入首页了。