2016-04-04 18 views
0

何らかの理由で私は竜巻で設定した安全なクッキーを取得できません。火かき棒を使用して、私はクッキーと有効期限を見ることができますが、それを印刷または取得しようとすると、それはNoneとして出てきます。私が見ることができないようにそれを無効にする何らかの方法がありますか?これは私が使用しているコードです:竜巻の安全なクッキーを取得できません

class loginHandler(tornado.web.RequestHandler): 
def post(self): 
    # first type of request made to this page is a post 
    userEmail = self.get_argument("username") 
    password = self.get_argument("password") 
    deviceType = self.get_argument("deviceType") 

    # get some info from the client header 
    userIp = self.request.headers['X-Real-Ip'] 
    userAgentInfo = self.request.headers['User-Agent'] 

    result = pumpkinsdb.loginUser(userEmail, password, deviceType, userIp, userAgentInfo) 
    if result == None: 
     self.redirect("/") 
    else: 
     fullname = pumpkinsdb.pumpkinsdb_user['fullName'] 
     this_page_title = fullname if fullname else pumpkinsdb.pumpkinsdb_user['userEmail'] 

     # successful login set up user's cookies 
     # self.set_secure_cookie("memberId", str(user['memberId']), expires_days=0.1, secure=True, httponly=True) 
     self.set_secure_cookie("memberId", str(pumpkinsdb.pumpkinsdb_user['memberId'])) 
     self.write(str(self.get_secure_cookie("memberId"))) 

     time_now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 
     print "{} [{}::get] pid[{}] login requested for user: [{}] from [{}] using [{}]".format(
      time_now, self.__class__.__name__, os.getpid(), pumpkinsdb.pumpkinsdb_user['emailAddress'], 
      pumpkinsdb.pumpkinsdb_user['userIp'], pumpkinsdb.pumpkinsdb_user['userAgentInfo']) 

     self.render('calendar.html', title = this_page_title) 

def get(self): 
    validSession = self.get_secure_cookie("memberId") 
    if validSession: 
     this_page_title = pumpkinsdb.pumpkinsdb_user['fullName'] 
     self.render('calendar.html', title = this_page_title) 
    else: 
     print self.get_secure_cookie("memberId") 
     self.write(str(validSession)) 

答えて

1

サーバーを再起動すると、あなたのクッキーの秘密は、何らかの形で変更されていますか? Cookieの秘密が変更された場合、既存のCookieはすべて無効になります。クッキーシークレットをランダムに生成する必要がある場合でも、コードにcookie_secret=os.urandom(16)のようなものがあることを意味するわけではありません。そのたびに新しい秘密が生成されるためです。その代わりに、os.urandomに一度電話して、その出力をどこかに保存する必要があります(TLSキーのように、安全でプライベートな状態に保つ必要があります)。私は4つの竜巻はnginxの後ろに、実行中のプロセスだったと各トルネードプロセスのために私が独自のランダムな文字列を生成した

0

ので、基本的な問題は:

cookie_secret = base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes) 

各トルネードプロセスが異なる秘密があったので、明らかにそれは私の問題でしただから私はそれを読んでみると竜巻は無効だと思った。

キーは、ユニークなランダムな文字列を生成するが、その後、そのようなあなたのオプションのように確保どこかに格納することです:

define(cookie_secret, "934893012jer9834jkkx;#[email protected]@##") 

または任意の文字列を使用すると、フィット感と考えます。

回答いただいた皆様、ありがとうございます。申し訳ありません。

関連する問題