框架是SpringMVC+Spring-security+freemarker
錯誤分析:正常來說,session失效的時候服務器後臺會將失效的sessionId發送給前端的瀏覽器並作爲cookie存儲起來,這樣cookie也會馬上失效。但是發生以上的問題
經過日誌跟蹤發現session失效的時候,產生了一個未知的cookie,這個cookie並不是由服務器端傳到瀏覽器的,這樣就導致session失效了,但是點擊失效鏈接產生的cookie卻不生效,只有清除瀏覽器緩存或者關閉瀏覽器纔會失效,所以導致瞭如標題所述的問題。
解決方法:在web.xml中我配置的servlet-mapping爲:
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/ps-admin-nimitz/*</url-pattern><!-- 注意這裏就是URL攔截配置 -->
</servlet-mapping>
由於我的一級菜單比較多,所以我的URL並不是直接用 /ps-admin-nimitz/hello.do,而是在ps-admin-nimitz和hello.do之間加了一個一級菜單的名稱,例如 /ps-admin-nimitz/consumer/hello.do,經過驗證就是由於加了這個consumer導致了以上的問題,所以去掉consumer即可。