revel session注销失败
无    2014-02-22 21:11:18    693    0    0
life

场景:

logout()注销清空session, c.Redirect("/index") 仍有session.

原因:

Filter排序:

  1. SessionFilter
  2. ActionFilter

一个请求开始, 先是SessionFilter, 这时: 将session从cookie中还原, 执行其它filter, 后再将session设置到cookie中:

func SessionFilter(c *Controller, fc []Filter) {
    c.Session = restoreSession(c.Request.Request)
    // Make session vars available in templates as {{.session.xyz}}
    c.RenderArgs["session"] = c.Session
    fc[0](c, fc[1:])
// 将session信息设置到cookie中 // Store the session (and sign it). c.SetCookie(c.Session.cookie()) }

于是乎, 该cookie传到前台, 浏览器将cookie 设上.  可能是浏览器没来得及设置cookie, 又跳转到index了.

解决方法:

js跳转到/logout的, 先把cookie清空.

上一篇: golang 图片处理资源

下一篇: leanote 开发进度

693 人读过