2016-04-04 1 views
0

по какой-то причине я не могу получить безопасный файл cookie, который я установил с торнадо. Используя firebug, я могу видеть файл cookie и дату истечения срока его действия, но когда я пытаюсь его распечатать или получить, он продолжает появляться как None. Есть ли какой-то способ, который я делаю недействительным, я не вижу. Это код, который я использую:не удалось получить защищенный файл cookie торнадо

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 становятся недействительными. Обратите внимание, что даже если секрет cookie должен генерироваться случайным образом, это не означает, что в вашем коде должно быть что-то вроде cookie_secret=os.urandom(16), потому что каждый раз будет генерировать новый секрет. Вместо этого вам нужно позвонить os.urandom один раз и сохранить его выход где-нибудь (держите его в безопасности и приватным, например, ваши ключи TLS).

0

поэтому в основном проблема была у меня было четыре смерча процессы, выполняющиеся за Nginx и для каждого процесса торнадо я создал уникальную случайную строку:

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

очевидно, что моя проблема, потому что каждый процесс смерч был другой секрет поэтому, когда я попытался прочитать это, торнадо подумал, что это неверно.

Ключ для создания уникального случайную строку, но затем сохранить его где-то обеспечить, например, в параметрах:

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

или любой другой строка, которую вы считаете нужным.

Спасибо всем, кто ответил. Извини за это.

 Смежные вопросы

  • Нет связанных вопросов^_^