写这个代码,写了很久。
实际上,项目上很难用到这么复杂的 Token 机制。贴在这里,回向给十方三世的程序员吧。
using PortalCore;
using SqlServerModels.舍利弗;
using System;
using System.Threading.Tasks;
namespace TokenCore
{
/// <summary>
/// 专家模式:会重新颁发一个会话。
/// 普通模式:会话永远有效,并不重新颁发。除非失效,或者另行获取,弃用这个。
/// </summary>
public class TokenContext_Expert
{
const int _会话有效分钟 = 60 * 2; //会话过期,还可以获取颁发
const int _颁发有效分钟 = 60 * 24 * 7; //颁发过期,就是彻底过期
const int _重新颁发后赠送分钟 = 1;
/// <summary>
/// 获取会话Token
/// </summary>
public static _会话表 GetToken(string accesstoken, string publishtoken)
{
try
{
return TokenContext_Expert.GetAccessTokenAsync(accesstoken).Result;
}
catch (TokenNotFoundException ex)
{
throw (ex);
}
catch (TokenExpiredException) //如果过期
{
try
{
return TokenContext_Expert.PublishTokenAsync(publishtoken).Result;
}
catch (TokenNotFoundException ex)
{