1

有没有一种方法或函数来检查密钥是否是当前应用ID的有效密钥?检查一个密钥是否是当前应用ID的有效密钥

例如

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

您可以检查正确的应用程序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 
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') 
相关问题