revel如何设置与读取 session?

在学习一个新项目,使用pyqt做前端GUI,发送HTTP请求到服务端,由revel解析请求并返回json数据。

目前遇到这样一个问题,revel设置session之后,应该如何做后续操作:以下是我的代码:
服务端:

func  (c App) Login() revel.Result {
    username := c.Params.Get("username")
    password := c.Params.Get("password")
    revel.INFO.Println(c.Params.Get("securityCode")) // 这里试图打印出发来的请求所携带的securityCode,但最后在服务器端打印出来的不太一样。
    revel.INFO.Println(c.Session.Cookie())

    c.Session["securityCode"] = util.RandSeq(32)


}

客户端:

class Http(FuturesSession):
    def __init__(self):
        FuturesSession.__init__(self)
        self.username = ''
        self.password = ''

    def rest_post(self,url,data,callback):
        print(self.cookies)
        self.response = self.post(url, background_callback=callback,data=data,cookies=self.cookies)
        self.response.result()

http = Http()

结果,在服务端打印出来的信息如下 :

INFO  2015/06/20 02:46:53 login.go:15: REVEL_SESSION=c1df5d0389645582b7e57bfabd63c902b667a68a-%!_(MISSING)TS%!A(MISSING)1437331613%00securityCode%!A(MISSING)7OYnUwfZqT7kAbnGooDUdKDG3IMFjMuk%!;(MISSING) Path=/; Expires=Sun, 19 Jul 2015 18:46:53 UTC
INFO  2015/06/20 02:46:53 login.go:24: **TWTistCifoaxLCK1snyKnYKwVd2Z9Qhg**

为什么没有我在revel中设置的session呢?具体应该怎么做呢

对了,有一点要说明 ,因为以上代码是我在实验 ,所以图简单,就只是连续两次请求Login(),自然第一次是不带cookies的,第二次就有带了。但在cookies里存储的REVEL_SESSION和我在revel里生成的session不一样。

共 2 个回复


wojoo

v, ok := c.Session["securityCode"]
revel.INFO.Println(v)

# 0

AnnatarHe

是不是因为cookie没有设置到客户端的原因,建议排查一下。

我也遇到了这个问题,不过我是在前后端分离的时候碰到的。

希望下一个碰到session设置不上的话,建议检查一下proxy是不是没有把cookie设置好

# 1