tornado session 过期后,无法访问最后一次停留的页面

2015-09-18 13:54:29 +08:00
 dododada
有没有 tornado 比较熟悉的同学,请教个问题
class UsersLoginHandler (WebHandler ):
def get (self ):
if not self.current_user:
self.render ("square/login.htm")
else:
if self.current_user.id == settings.admin_id:
self.render ("square/notice-management.htm")
else:
self.render ("square/user-announce.htm")
上面是登录页面跳转的代码, session 过期之后,重新登录,就访问不了最后停留的界面了,直接重定向到 "/"
有没有啥解决的方法
2570 次点击
所在节点    Python
4 条回复
zog
2015-09-18 15:23:01 +08:00
tornado 默认没有 session 功能的,您可能是说 secure_cookie 么?你可以试试 self.set_secure_cookie ()在 cookie 里设置。您的问题我有点没有看懂, 你可以再深入描述一下想干什么?
dododada
2015-09-18 15:45:09 +08:00
@zog self.set_secure_cookie () 设置了 jsessionid, 没有加过期时间

self.set_secure_cookie ("jsessionid", jsessionid, domain=settings.cookie_domain, expires_days=None )

jsessionid 另外存在 redis 中,设置了过期时间,比如 1 分钟。

比如在“用户管理”页面超时,重新登录,再次请求"用户管理"页面,直接被重定向到"/", 到首页去了。

前端过来的 url 是"/user/manage", 但是倒了后台直接是"/"

超时的时候停留的页面,都是这个情况。

单台机器, nginx 的 upstream 也没有 iphash 之类的

帮忙分析一下
jerry
2015-09-18 16:01:46 +08:00
如果你的是认证限制是用的 tornaodo.web. authenticated 处理会有 next 参数,登录逻辑处理中,成功后需要手动转跳到 next 指定的路径的
zog
2015-09-18 18:47:27 +08:00
@dododada 我理解是:你希望在 session 超时后,重新登陆,登录后回到超时的页面。如果是这样,你试试在连接中加个 query ,比如?redirect="/user/XXX", handler 中 redirect = self.get_argument ('redirect'),验证成功后 self.redirect (redirect )。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/221736

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX