后台有个a标签
<li><a href="/back/managers/logout" onclick="if(!confirm('确认要退出系统么?')){return false;}">退出</a></li>
应该是访问下面方法的
//后台退出 back.GET("/managers/logout", Back.Managers{}.Logout)
// 退出 func (m Managers) Logout(c *gin.Context) { currentTime := time.Now() year, month, day := currentTime.Date() hour, minute, second := currentTime.Clock() yearMonthDay := fmt.Sprintf("%d-%d-%d %d:%d:%d", year, month, day, hour, minute, second) fmt.Println("Logout", yearMonthDay) sessionA := sessions.Default(c) sessionA.Delete("back_login_manager_id") sessionA.Save() sessionA.Delete("back_login_manager_name") sessionA.Save() fmt.Println("开始") sessionA.Clear() time.Sleep(1 * time.Second) fmt.Println("结束") sessionA.Save() //跳转 c.Redirect(http.StatusMovedPermanently, "/back/index/index") c.Abort() }
结果直接去back/index/index
session不删除各种怪事,出现过打开页面检查就能正常退出
有时会去访问logout方法退出,但是点击浏览器返回页面能回到后台,还能查看后台功能,离大谱
有时登录上之后,访问后台其它功能会跳转到登录页,去看代码,逻辑没问题
一度怀疑go与其它后端语言差别这么大吗?
最后不知在哪里看的资料,要在路由处加删除禁用缓存的代码,才恢复
func Router() *gin.Engine { r := gin.Default() // 清除页面缓存中间件 r.Use(func(c *gin.Context) { c.Writer.Header().Set("Cache-Control", "no-cache, no-store, must-revalidate") c.Writer.Header().Set("Pragma", "no-cache") c.Writer.Header().Set("Expires", "0") c.Next() })
标签:index,上线,fmt,back,后台,sessionA,退出,gin,异常 From: https://www.cnblogs.com/keketoloveme/p/17967360