检查密钥是否是当前应用ID的有效密钥

时间:2014-10-07 09:57:21

标签: python google-app-engine google-cloud-datastore app-engine-ndb

是否有方法或功能来检查某个密钥是否是当前应用ID的有效密钥?

e.g。

key = fetch_urlsafe_key_from_external_source()
key = ndb.Key(urlsafe=key)
if not is_valid_key(key):
  return
# do something with the key

编辑:目前我正在做

def is_valid_key(key):
  try:
    key.get()
  except datastore_errors.BadRequestError:
    return False
  return True

但希望有人提出一些不需要访问数据存储区的内容

2 个答案:

答案 0 :(得分:2)

您可以检查密钥中包含的正确的应用程序ID:

import os

def is_valid_key(key):
  """Valid key should include an ID and current application ID.
  """
  if key.app() == os.getenv('APPLICATION_ID') and key.id():
    return True
  return False

答案 1 :(得分:0)

这是你在找什么?

def is_valid_key(key):
  try:
    key.id()
  except TypeError:
    return False
  return True

修改

我知道OP希望应用程序验证而不仅仅是密钥验证。当前选中"正确"答案适用于大多数情况,但如果密钥不完整/已更改(即缺少某些字符或字符串末尾有额外的字符),仍会引发异常,更好的验证方法是:

def is_valid_key(key):
  try:
    key.id()
  except TypeError:
    return False
  return key.app() == os.getenv('APPLICATION_ID')