如何獲取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)
你是對的。我只是沒有提到文件中的東西。我專注於那些不在那裏並且需要查看源代碼的東西 –