Flask 的 session 问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
shinerene
V2EX    Python

Flask 的 session 问题

  •  
  •   shinerene
    Xiechen 2014-05-28 05:27:11 +08:00 19782 次点击
    这是一个创建于 4221 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在看Flask的文档的时候 对于session很模糊,问题在于:
    如果我有一个用户登录,则我将他的user_id存入到session中去,session又是dict的形式,那么我服务器运行时候有那么多的用户登录,session是怎么存储在服务器中的呢?
    14 条回复    2014-05-28 19:22:06 +08:00
    ryan123
        1
    ryan123  
       2014-05-28 05:48:11 +08:00
    我也是新手, 貌似是在浏览器端的cookie存session id, 然后服务器获取此cookie中的session id.
    然后服务器编译后检查是否匹配?
    loading
        2
    loading  
       2014-05-28 06:56:50 +08:00 via Android
    flask会默认存到内存里,你可以杀掉进程,再去看还在不在。如果为了防掉电等需要持久化,可以存到各种数据库!


    客户端是浏览器存到cookie里,这个用什么都是这里,。
    Ever
        3
    Ever  
       2014-05-28 07:34:34 +08:00
    flask用的secure cookie方式保存session, 即session数据是加密后保存在用户cookie里.
    lovesky
        4
    lovesky  
       2014-05-28 08:09:02 +08:00
    @Ever 不一定,这个可以自由选择。
    loading
        5
    loading  
       2014-05-28 08:27:10 +08:00 via Android
    Ever
        6
    Ever  
       2014-05-28 08:44:05 +08:00   1
    @lovesky 我觉得自由选择用着不太合适, 毕竟secure cookie是flask唯一自带的session方案, 但是flask确实留了接口, 自由实现较妥。

    @loading 和这不冲突, 只是把原本服务器的backend换成了加密后保存在客户端的cookie. https://github.com/mitsuhiko/flask/blob/master/flask/sessions.py
    secure cookie方案rails用得比较早, 你留心下github和twitter就发现他们的cookie里有个_xx_sess字段, 就是通过secret key加密后base64过的session.
    humiaozuzu
        7
    humiaozuzu  
       2014-05-28 09:06:39 +08:00   1
    =.= flask 默认的是 client side session,什么意思自己 google 下就明白了。
    为了对用户负责,请用 server side session,一般我们都用redis,可以持久化。可以手动也可以用插件
    http://flask.pocoo.org/snippets/75/
    https://github.com/fengsp/flask-session
    clino
        8
    clino  
       2014-05-28 09:11:18 +08:00
    看起来uliweb的session比flask的要好啊
    https://limodou.github.io/uliweb-doc/zh_CN/session.html
    内置好了3种session存储后端的类型,把常用的都覆盖到了
    '''
    type
    表示session存储后端的类型,目前可用的值有:

    file 文件系统
    database 数据库
    redis redis数据库
    '''
    loading
        9
    loading  
       2014-05-28 09:17:49 +08:00 via Android
    @Ever 哦,搞错了!我们内部用的是修改过的……

    flask的客户端模式真的不安全啊!
    shinerene
        10
    shinerene  
    OP
       2014-05-28 15:43:12 +08:00
    @humiaozuzu 我也在看Redis,但是关于session的存储我还是有个疑问,就是如果我有100个用户连接着我的服务器,他们都登陆了,那么我的服务器端的session是是如何存储每个人的信息的?是每人一个session,如果是这样那么命名方式是怎样的呢?session1,session2?之后存储在一个内存中的表中么?
    humiaozuzu
        11
    humiaozuzu  
       2014-05-28 15:47:15 +08:00
    @shinerene 去 redis 里面看下不就知道格式了
    shinerene
        12
    shinerene  
    OP
       2014-05-28 18:06:28 +08:00
    @loading 我在Flask里面import的时候 可以import session和import sessions,我看文档的blog的实例中 是import session 请问这两个有什么区别?
    loading
        13
    loading  
       2014-05-28 18:18:38 +08:00 via Android
    @shinerene session引用的是 sessions里的,只有几行!
    具体可看代码!

    都是 cookie base
    shinerene
        14
    shinerene  
    OP
       2014-05-28 19:22:06 +08:00
    @loading 看到了 是定义在globals.py这个文件中的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1047 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 23:07 PVG 07:07 LAX 15:07 JFK 18:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86