2012-12-07 10 views
1

webapp2에서 세션 ID를 가져 오는 방법은 무엇입니까?webapp2 세션 ID 받기

아무데도 문서화되지 않은 것 같고 나에게는 사소한 것이 아니 었습니다.

나는이 질문에 대한 답으로 제시 한 해결책을 찾았지만 어쩌면 누군가는 더 간단하거나 더 좋은 것을 발견 할 것입니다. 어쨌든 나는이 사람

내 솔루션은 다음과 같습니다

답변

1

에게 도움이 될 수 있다고 생각 : 당신이 페이지를 새로 고침 할 때까지 예에서

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>") 
0

, 당신은, 세션 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) 
+0

당신은 절대적으로 옳습니다. 나는 문서에있는 것들을 언급하지 않았다. 나는 거기에없는 것들에 초점을 맞추었고 소스 코드를 조사해야했다. –