是否有方法或功能来检查某个密钥是否是当前应用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
但希望有人提出一些不需要访问数据存储区的内容
答案 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')