как сделать токен активным, когда пользователь обращается к API - PullRequest
0 голосов
/ 22 апреля 2020

Я создал систему входа в систему на основе токена JWT, я могу сгенерировать токен и добавил срок действия этого токена.

Requiremenent :

  • Когда пользователь обращается к пользовательскому интерфейсу, срок действия токена не должен истекать.

  • Когда пользователь не обращается к пользовательскому интерфейсу в течение 10 минут, срок действия токена должен истечь.

Я использую Angular для пользовательского интерфейса и python flask для бэкэнда, я не знаю откуда (ни пользовательский интерфейс, ни бэкэнд), я должен справиться с этим. Я думаю, что мы должны справиться с этим с python flask, поэтому я использовал python и flask теги. Если я ошибаюсь, дайте мне знать.

мой бэкэнд-код:

def loginM(email, password):
     try:
       time_count = get_time_count_details()
       user = Credentials.query.filter_by(email=email).first()
       user_reg = Registration.query.filter_by(email=email).first()
       if bcrypt.check_password_hash(user.password, password):
           payload = {"email": user.email, 'user_id': user.user_id,
                      'first_name': user_reg.first_name,
                      'company': user_reg.company, 'mobile_num': user_reg.mobile_number,
                      'exp': time.time() + time_count}
        secret_key = open(SECRET_KEY).read()
        token = jwt.encode(payload, secret_key, algorithm='RS256').decode('utf-8')
        return dict(token=token)
    else:
        return dict(Unsucessful="Invalid Email Address and password")
except Exception:
    return False

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете использовать срок действия ключа redis вместо exp в полезной нагрузке jwt

  • Полезная нагрузка jwt не сохраняет значение exp, срок действия jwt не истечет. полезная нагрузка, подобная этой:
payload = {"email": user.email, 'eco_user_id': user.eco_user_id,
           'first_name': user_reg.first_name,
           'company': user_reg.company, 'mobile_num': user_reg.mobile_number,}
  • redis save token , и установите срок действия 10min
redis.set(token, user.id)
redis.expire(token, 60 * 10)

Когда пользователь обращается к API, sever будет найти токен в redis.if найти токен в redis, мы переопределим sh время истечения redis, в противном случае вернем 403 и скажем пользователю войти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...