在我的代碼我使用使用python/GAE對cookie進行存在檢查的最佳方式是什麼?
user_id = self.request.cookies.get('user_id', '')
if user_id != '':
me = User.get_by_id(int(user_id))
,但對我來說這看起來不正確,即使它在技術上的作品...它看起來不精確。有沒有更好的方法可以檢查cookie的存在?
在我的代碼我使用使用python/GAE對cookie進行存在檢查的最佳方式是什麼?
user_id = self.request.cookies.get('user_id', '')
if user_id != '':
me = User.get_by_id(int(user_id))
,但對我來說這看起來不正確,即使它在技術上的作品...它看起來不精確。有沒有更好的方法可以檢查cookie的存在?
我從來沒有使用AppEngine上,但我想request.cookies
就像例如在Django只是一個普通的字典對象。你可以嘗試以下方法:
if 'user_id' in self.request.cookies:
# cookie exists
嘗試和除條款是這樣的情況下非常有用,你需要一個明確的和明顯的工作流與一觸即發所有一切無效捕撈。
需要明確的是,這並沒有辦法參與安全跟蹤/留下客戶端上的數據,管理用戶會話的各種細微差別。
try:
user_id = self.request.cookies['user_id'] #will raise a 'KeyError' exception if not set.
if isinstance(user_id, basestring):
assert user_id # will raise a 'ValueError' exception if user_id == ''.
try:
user_id = int(user_id)
except ValueError:
logging.warn(u'user_id value in cookie was of type %s and could not be '
u'coerced to an integer. Value: %s' % (type(user_id), user_id))
if not isinstance(user_id, int):
raise AssertionError(u'user_id value in cookie was INVALID! '
u'TYPE:VALUE %s:%s' % (type(user_id), user_id))
except KeyError:
# 'user_id' key did not exist in cookie object.
logging.debug('No \'user_id\' value in cookie.')
except AssertionError:
# The cookie value was invalid!
clear_the_cookie_and_start_again_probably()
except Exception, e:
#something else went wrong!
logging.error(u'An exception you didn\'t count on. Exception: %s' % e)
clear_the_cookie_and_start_again_probably()
raise e
else:
me = User.get_by_id(user_id)
「需要明確的是,這並沒有辦法參與安全跟蹤/留下客戶端上的數據,管理用戶會話的各種細微差別。」我怎麼可以研究這一點,以便我能理解這些細微差別? – zakdances
結帳此頁的「客戶端Web會議」部分:http://en.wikipedia.org/wiki/Session_(computer_science)。 –
應用服務引擎,你可以看一下GAE的會話,根據該網站,這是」 ......一個會話庫在谷歌App Engine的Python運行時對所有的會話大小。這是非常快,重量輕(一個文件),使用方便。」。我自己使用它,並沒有任何問題。 –