1

Есть ли способ или функция, чтобы проверить, является ли ключ действительным ключом для текущего идентификатора приложения?Проверьте, является ли ключ действительным ключом для текущего идентификатора приложения

например.

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

EDIT: На данный момент я делаю

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

Но, надеюсь, кто-то предлагает что-то, что не требует удара хранилищу

ответ

2

Вы можете проверить правильность идентификатора приложения включены в ключе:

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 

EDIT:

Я знаю, понимаю, что ОП хочет проверки приложений проверки не только ключ. Текущий выбранный «правильный» ответ работает в большинстве случаев, но все равно вызывает исключение, если ключ был неполным/измененным (т. Е. Отсутствием некоторых символов или добавлением дополнительных символов в конце строки), лучшим способом проверки будет:

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

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

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