Я пытаюсь создать систему ключей на моем сервере, которая позволяет пользователю перейти на страницу, если они ввели действительный ключ в качестве параметра GET. Если ключ недействителен или если ключ не введен, они будут перенаправлены на страницу с недопустимым ключом, как показано ниже.Система проверки подлинности бутылочной бутылки Python не работает после того, как один человек входит в ключ?
@route('/test/invalidkey')#key is invalid!
def index():
return "Sorry, your API key is invalid! Message the admin if this is a problem."
На всех маршрутах есть параметр apply=[require_key]
.
@route('/test/count', method='GET', apply=[require_key])
Вот require_key метод:
def require_key(fn):#check if api key is valid
if not request.query.key:
redirect('/test/invalidkey')
return fn
Прямо сейчас нет ключа API. На данный момент я просто проверяю, был ли добавлен параметр «key = hey», добавленный в URL-адрес.
Моя проблема: всякий раз, когда кто-то пытается получить доступ к странице без ключа api в первый раз, он перенаправляет на недействительную ключевую страницу, как это предполагалось. Когда кто-то впервые обращается к ключу, они поступают так, как предполагается. Но ... когда кто-то обращается к странице без ключевого параметра после того, как они уже получили доступ к странице, к ней уже был обращен ключевой параметр, они могут получить доступ к странице, даже не имея ключевого параметра GET. Почему это происходит?
Если даже один человек обращается к нему с ключом, любой, кто обращается к нему без ключа, разрешен. Является ли этот ключевой параметр GET сохраняемым и упоминается снова каждый раз? Если да, то как мне его очистить?
Я прочитал документацию по бутылке, но есть только небольшой блок текста, объясняющий параметр apply и то, что он делает. Это не касается каких-либо дополнительных деталей.