Срок действия маркеров доступа истекает - PullRequest
0 голосов
/ 30 апреля 2020

Я использую некоторые методы веб-API в моих MVC проектах. Я занимаюсь созданием класса обработки API. Я планирую получить токен доступа в конструкторе этого класса, а затем снова присоединить его к моему объекту webapihandler в конструкторе. Тогда я буду использовать несколько вызовов API, что нормально. Тем не менее, я думаю, что я должен контролировать время истечения токена перед каждым вызовом, и если он истек, я должен создать его. Я не знаю, как проверить время истечения токена.

Впервые я имею дело с токенами таким образом, и любая помощь приветствуется.

1 Ответ

1 голос
/ 30 апреля 2020

Вы хотите сохранить access_token, refresh_token, token_expire_time и last_write в базе данных. last_write - это время создания токена доступа, а token_expire_time - сколько времени истекает токен доступа в минутах или секундах для точности времени.

оттуда вы просто сравниваете (last_write time + token_expire_time) с время сейчас.

Не забывайте всегда использовать DateTime.UtcNow при сравнении и сохранении времени в базе данных или в других часовых поясах с его сбросом, и оно не будет должным образом обновлять sh.

Вот пример

Класс базы данных

public class Token
{
    public int Id { get; set; }

    public string AccessToken { get; set; }

    public string RefreshToken { get; set; }

    public DateTime LastWrite { get; set; }

    public int Expiration { get; set; }
}

Функция для проверки refre sh:

// call this to get the token before making API call
public static async Task<string> GetAccessToken(Token token)
{
     string accessToken;
     if (token.LastWrite.AddSeconds(token.Expiration) <= DateTime.UtcNow)
     {
        // refresh and update the database with the new tokens/expiration
     }
     else
     {
          accessToken = token.AccessToken;
     }
     return accessToken;
}
...