У меня есть простая тестовая страница входа в систему, которая генерирует токен JWT и сохраняет токен в файле Cook ie. Время выдоха ie установлено на 15 секунд, только для тестов. Маркер JWT имеет переменную expiresIn, которая также «устанавливает» время истечения для пользователя, но есть одна проблема. После получения повара ie я перехожу на домашнюю страницу, но срок действия повара ie не истекает через 15 секунд.
Код:
def token_required(f):
@wraps(f)
def decorated(*args, **kwargs):
token = None
if 'session_token' in request.cookies:
token = request.cookies['session_token']
response, message = Token_utilities.request_scanner(token)
if response is True:
return f(message, *args, **kwargs)
else:
print(request.cookies['session_token'])
return jsonify({"status": message})
else:
return jsonify({"status": "no_token"})
return decorated
@app.route('/login/<username>', methods=['GET'])
def login(username):
if request.method == 'GET':
# Token Expiration w cookie
current_user = User.query.filter_by(username=username).first()
if not current_user:
return jsonify({'status': 'noacc'})
print(current_user.lastAccessedTime)
current_user.lastAccessedTime = datetime.datetime.now().strftime('%b %d %Y %H:%M.%S')
lastAccessedTime_object = datetime.datetime.strptime(current_user.lastAccessedTime, '%b %d %Y %H:%M.%S')
current_user_token_valid = lastAccessedTime_object + datetime.timedelta(seconds=30)
print('New token expires at - ', current_user_token_valid.strftime("%b %d %Y %H:%M.%S"))
token = jwt.encode({'expiresIn': str(current_user_token_valid.strftime("%b %d %Y %H:%M.%S")),
'public_id': current_user.public_id,
# Profile
'first_name': current_user.first_name,
'last_name': current_user.last_name,
'username': current_user.username,
'role': current_user.role},
app.config['SECRET_KEY'])
print('ok')
resp = make_response({"status": "token_created"})
resp.set_cookie('session_token', token.decode('UTF-8'), expires=datetime.datetime.now() + datetime.timedelta(seconds=15))
print('logged in as', current_user.username)
return resp