我已经做了我可以尝试的一切,但它根本不起作用。问题是session.get('t_yname')在检查会话值时总是返回None。
详细信息:
请帮帮我。
我尝试过以两种方式创建会话对象:
1.使用本地磁盘创建会话:
global session
app = web.application(urls, globals())
if web.config.get('_session') is None:
session = web.session.Session(app,web.session.DiskStore('sessions'),initializer= {'t_yname': '', 't_auth':0})
web.config._session = session
else:
session = web.config._session
2.with db
global session
app = web.application(urls, globals())
if web.config.get('_session') is None:
store = web.session.DBStore(model.db, 'sessions')
session = web.session.Session(app, store)
web.config._session = session
else:
session = web.config._session
其他一些代码:
用户登录时设置会话值(按预期工作):
class Login:
def GET(self):
return render.login()
def POST(self):
name=web.input(name='').name
passwd=web.input(passwd='').passwd
if name=='' or passwd=='':
raise web.seeother("/login")
ep=str(hashlib.md5(passwd).hexdigest().lower())
for user in t_globals['users'][:]:
if name==str(user.name) and ep==str(user.passwd):
session.t_auth=int(user.auth)
session.t_yname=str(user.name)
print "setted:" + session.get('t_yname') ### work as expected here
raise web.seeother("/")
raise web.seeother("/login")
通过阅读会话值(不工作)来检查登录:
def check_login():
login=False
sname = session.get('t_yname') ## always None
print sname
if sname is not None and sname != "":
for user in t_globals['users'][:]:
if str(user.name)==sname:
login=True
if login == False:
session.t_yname=''
return login
答案 0 :(得分:1)
Finnaly我解决了这个问题。我使用session._initializer ['t_yname']而不是session.t_yname。但我不明白,webpy.org上的文件根本没有提及。