最近看来很多网上都是思路,或者代码片段,非完整项目,自己在闲余时间做个demo,仅供参考。如有更好方案可以请分享给我。
其实就是自定义一个jwt中间件,中间件中实现大致如下:
#region 实现redis自动续期
var vUser = authManage.GetTockenInfo(token);
string sTokenExp = redisClient.Get("Token:" + vUser.UserId);
if (!string.IsNullOrWhiteSpace(sTokenExp))
{
//sTokenExp = sTokenExp.Replace("\\", "");
dynamic dyToken = JsonConvert.DeserializeObject(sTokenExp);
string sToken = token;
if (null != dyToken && null != dyToken.exp)
{
double dMinutes = (Convert.ToDateTime(dyToken.exp) - DateTime.Now).TotalMinutes;
if (dMinutes <= 1)
{
sToken = authManage.GenerateJwtToken(vUser);
redisClient.SetAsync("Token:" + vUser.UserId, "{\"tockenStr\":'" + sToken + "',\"exp\":'" + DateTime.Now.AddSeconds(120) + "'}", 120);
}
}
token = sToken;
}
#endregion
话不多说上完整代码示例:https://download.csdn.net/download/hefeng_aspnet/19550963