解決jeesite問題java.lang.String cannot be cast to SystemAuthorizingRealm問題
這些天在jeesite項目上進行二次開發,遇到許多莫名其妙的問題,在項目運行的過程中沒有任何錯誤,項目就跑不起來了,報的是如下錯誤。網上找了半天沒有找到解決辦法。
ERROR [500.jsp] - java.lang.String cannot be cast to com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm$Principal
java.lang.ClassCastException: java.lang.String cannot be cast to com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm$Principal
at com.thinkgem.jeesite.modules.sys.utils.UserUtils.getPrincipal(UserUtils.
at com.thinkgem.jeesite.modules.sys.utils.UserUtils.getUser(UserUtils.java:122)
at com.thinkgem.jeesite.common.persistence.BaseEntity.getCurrentUser(BaseEntity.java:80)
at com.thinkgem.jeesite.modules.cms.service.SiteService.findPage(SiteService.java:34)
at com.thinkgem.jeesite.modules.cms.service.SiteService
問題分析
首先可以確定相同的代碼,在其他組員電腦上可以正常運行,不是代碼的問題。
那么問題肯定處在了開發環境上。
我猜測可能是代碼緩存問題,於是我把idea編譯器和項目都清理了一遍,但沒能解決這個問題。
再后來一次偶然的機會發現我這個問題主要發生在火狐瀏覽器(個人傾向於使用火狐瀏覽器,配合firebug非常給力),使用google或者edge都不會出問題。
看看火狐的請求

單從請求也發現不了什么問題,但是緩存里竟然有東西

對比一下火狐和edge的請求cookie參數,便會發現火狐多了一些參數

