我正在考虑根据本文松散地在python中设置全局值(下面的示例): Using global variables in a function other than the one that created them
#get a variable; set global variable
class Home(webapp2.RequestHandler):
def get(self):
#use OAuth2 to get a variable (example UserId = 1234567890)
#set the UserId here
global userId
#use global variable
class Submit(webapp2.RequestHandler):
def post(self):
#Do something with userId 1234567890
问题/不确定会发生什么(数字表示按时间顺序排列):
class Home
class Home
class Submit
内容(例如尝试存储到数据库:UserId = 1234567890; Comment = hi)???。它会存储为UserId = 1234567890; Comment = hi OR AS UserId = 5555555555;注释= HI)
答案 0 :(得分:2)
在网络应用中设置全局变量的唯一安全性是:a)在初始化期间设置不可变对象(或对象图形)时,以及b)当您正在工作时在单用户应用程序上,但如果您有多个选项卡打开到应用程序,则可能会出现问题。
当您需要在请求之间保存状态,并且该状态将通过POST返回给您时,您可以将状态外部化为隐藏表单字段,但更安全的选择是使用会话。对于webapp2,webapp2 sessions似乎很受欢迎。
答案 1 :(得分:1)
我刚刚测试了代码,结果是UserId = 5555555555;注释=喜。我想这就是为什么他们说全局变量是危险的:(