Ваше описание проблемы указывает на то, что уровень доступа (`lvl`) проверяется один раз при инициализации, и при последующих запросах изменение этого значения не учитывается. Чтобы исправить эту ситуацию, следует убедиться в том, что уровень доступа проверяется каждый раз, когда это необходимо, а не только при первой загрузке.
Вот несколько шагов, которые вы можете предпринять, чтобы решить проблему:
1. **Проверка уровня доступа на каждом запросе:** Убедитесь, что проверка уровня доступа выполняется на каждом запросе, а не хранится в переменной с фиксированным значением.
```python
from flask import Flask, request, abort
app = Flask(__name__)
# Образец данных пользователя, в реальном приложении это будет из базы данных
users = {
'Dimentiy': 8
}
def check_access(username):
# Получаем уровень доступа пользователя из источника данных
lvl = users.get(username, 0) # По умолчанию 0, если пользователь не найден
if lvl >= 8:
return True
else:
return False
@app.route('/some_endpoint')
def some_endpoint():
username = request.args.get('username')
if check_access(username):
# Пропускаем пользователя
return "Access granted"
else:
# Блокируем доступ
abort(403)
```
2. **Обновление данных пользователя:** Если уровень доступа может изменяться в ходе работы приложения, убедитесь, что вы обновляете данные пользователя в своем источнике данных (например, базе данных) и корректно их считываете при каждом запросе.
3. **Использование сессий:** Если у вас есть необходимость сохранять данные пользователя между запросами, используйте сессии для хранения информации, но не забывайте, что уровень доступа всё равно следует проверять в базовом источнике данных на каждый запрос.
4. **Сохранение фильтров или структур:** Если ваш уровень доступа — это часть хранилища данных (например, базы данных), вам нужно будет убедиться, что доступ к этой информации актуален и что проверки выполняются над самими свежими данными, а не сохранёнными в памяти.
В общем, ключ к решению вашей проблемы заключается в том, чтобы всегда проверять актуальные данные на каждом запросе, а не полагаться на значения, которые были установлены ранее.