今天打算部署一个Flask项目,用到了session,以前看到有文章说把secret_key设置成os.urandom(24)会很安全,于是就用了它,在本地调试的时候session管理没有问题,但是如果在服务器上用gunicorn+nginx部署,登录注册就乱掉了,基本上都能猜到是session的问题,但是为什么还不知道,于是就去google一下,很快就找到答案了。
先贴个链接:http://stackoverflow.com/questions/30370500/sessions-always-empty-with-flask-heroku
大意是secret_key设置成os.urandom(24)的话,它的值就会变化,而一旦发生变化,原来的cookie中的token就不能被新的secret_key验证,于是cookie就失效了,相应的session存的内容也就没了,所以会再次提示用户登录。因此以后secret_key最好设置成一个固定的字符串!