session各值过期时间不同而引起程序出错

beego : 1.2.0

this.SetSession("uid", user.Uid)
this.SetSession("level", user.Level)

 _, ok := ctx.Input.Session("uid").(int)
    if !ok && ctx.Request.RequestURI != "/login" {
        ctx.Redirect(302, "/login")
}

uid经常使用,同时用于过滤中间件检查uid判断用户是否已登录;level只是偶尔使用. 今天访问一个网页发现uid检查通过,而程序却因无法获取level而出错.

请问session中的各值的过期时间不是应该一样的吗?如果不一样,有什么办法避免这种问题?

共 2 个回复


chenhao

或有其他方法的解决这种问题吗?

# 0

jimmykuu

用户退出的时候删除 uidlevel ,还有就是读 level 之前判断下有没有。

# 1