处理访问令牌到期时间

问题描述 投票:0回答:1

我在MVC项目中使用了一些Web API方法。我正在做的是创建一个API处理类。我打算在此类的构造函数中获取访问令牌,然后将其再次附加到构造函数中的webapihandler对象。然后,我将消耗几个API调用,这很好。但是,我认为我必须在每次调用之前控制令牌的过期时间,如果令牌已过期,则必须创建一个。我不知道如何检查令牌的到期时间。

这是我第一次以这种方式处理令牌,感谢您的帮助。

asp.net-mvc rest bearer-token
1个回答
0
投票

您要在数据库中保存access_token,refresh_token,token_expire_time和last_write。 last_write是访问令牌的创建时间,token_expire_time应该是访问令牌在数分钟后到期的时间。

从那里您只需将(last_write时间+ token_expire_time)与现在的时间进行比较。

[在比较时间并将其保存在数据库或其他时区时,请记住始终使用DateTime.UtcNow,并且将其扔掉,它不会正确刷新。

这里是一个例子

数据库类

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; }
}

检查刷新的功能:

// 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.