如何在Tornado中正确进行用户认证和会话管理?

0 投票
1 回答
569 浏览
提问于 2025-04-18 12:44

我有一个用Tornado框架做的网页应用,登录时我使用了Google的Oauth和Facebook的Graph Mixin。一旦用户授权,我会把他的邮箱存到cookie里:

self.set_secure_cookie('trakr', user['email'])

在后续的请求中,我会检查这个cookie是否存在。如果存在,我就从cookie里取出邮箱,然后用这个邮箱去查询数据库。

为了安全起见,我会用一个叫cookie_secret的东西对邮箱进行加密,这样邮箱就不会以明文形式显示出来。今天我用另一个邮箱登录,记下了它的cookie值。然后我又用我的主邮箱登录,修改了cookie的值为另一个用户的值,刷新页面后,我竟然能看到另一个用户的内容!

那么我该如何解决这个问题呢?或者说,如果有人获取了我的cookies,他们就可以一直以我的身份登录,这样可以吗?

1 个回答

0

感谢Jeff,解决方案很简单。让你的 cookies 设置为 httpOnly

在创建 cookie 的时候,把这个设置为 True

self.set_secure_cookie('trakr', user['email'], httpOnly=True)

撰写回答