如何获取webapp2中的会话ID?获取webapp2会话ID
它似乎没有记录在任何地方,这对我来说并不是微不足道的。
我发现了一些解决方案,我在这个问题的答案中提出,但也许有人会发现更简单或更好的解决方案。 无论如何,我认为这可能是给别人
如何获取webapp2中的会话ID?获取webapp2会话ID
它似乎没有记录在任何地方,这对我来说并不是微不足道的。
我发现了一些解决方案,我在这个问题的答案中提出,但也许有人会发现更简单或更好的解决方案。 无论如何,我认为这可能是给别人
我的解决方案看起来像这样有用:
import webapp2
from webapp2_extras import sessions
class Test(webapp2.RequestHandler):
def get(self):
session_store = sessions.get_store(request=self.request)
cookie_name = session_store.config['cookie_name']
session_id = self.request.cookies[cookie_name]
self.response.out.write('<html><body>')
self.response.out.write('Session id: %s' % session_id)
self.response.out.write("</body></html>")
在你的榜样,你不能得到会话ID,直到您刷新页面。您应该创建一个认证页面来创建会话。您还应该定义一个扩展dispatch()方法的基本处理程序,以启动会话存储并在请求结束时保存所有会话。阅读documentation看一个例子:
class Main(main.BaseHandler):
def get(self):
if not self.session.get('user'):
self.redirect("/authenticate",abort=True)
session = self.request.cookies("session")
#more stuff........
class Authenticate(main.BaseHandler):
def get(self):
if self.session.get('user'):
self.redirect("/")
else:
self.render("authenticate.htm")
def post(self):
if self.session.get('user'):
self.redirect("/",abort=True)
post_param = {"username":self.request.get("username"),
"password":self.request.get("password")}
if not post_param["password"] or not post_param["username"]:
redirect("/authenticate")
mySql = dbLib.MySqlLib()
try:
mySql.query("SELECT password FROM users where username=%s", post_param["username"],))
dbPassword = mySql.dbCur.fetchone()[0]
except dbLib.ProgrmmgError as error:
self.render("authenticate.htm",username = post_param["username"],
errorMessage = "Password and/or Username\
else: invalid")
if bcrypt.hashpw(post_param["password"],dbPassword) == dbPassword:
self.session['user'] = "root"
self.redirect("/")
else:
self.render("authenticate.htm",username = post_param["username"],
errorMessage = "Password and/or Username\
mySql.close()
app = main.webapp2.WSGIApplication([('/', Main),
("/authenticate",Authenticate),
(".*",main.Error_404)],
debug=True)
你是对的。我只是没有提到文件中的东西。我专注于那些不在那里并且需要查看源代码的东西 –