后台有个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() })
浙公网安备 33010602011771号