62,244
社区成员




public override async Task CreateAsync(AuthenticationTokenCreateContext context)
{
var clietId = context.OwinContext.Get<string>("as:client_id");
if (string.IsNullOrEmpty(clietId)) return;
var refreshTokenLifeTime = context.OwinContext.Get<string>("as:clientRefreshTokenLifeTime");
if (string.IsNullOrEmpty(refreshTokenLifeTime)) return;
//generate access token
RandomNumberGenerator cryptoRandomDataGenerator = new RNGCryptoServiceProvider();
byte[] buffer = new byte[50];
cryptoRandomDataGenerator.GetBytes(buffer);
var refreshTokenId = Convert.ToBase64String(buffer).TrimEnd('=').Replace('+', '-').Replace('/', '_');
var refreshToken = new RefreshToken()
{
Id = refreshTokenId,
ClientId = new Guid(clietId),
UserName = context.Ticket.Identity.Name,
IssuedUtc = DateTime.UtcNow,
ExpiresUtc = DateTime.UtcNow.AddSeconds(Convert.ToDouble(refreshTokenLifeTime)),
ProtectedTicket = context.SerializeTicket()
};
context.Ticket.Properties.IssuedUtc = refreshToken.IssuedUtc;
context.Ticket.Properties.ExpiresUtc = refreshToken.ExpiresUtc;
if (await _refreshTokenService.Save(refreshToken))
{
context.SetToken(refreshTokenId);
}
}
完整源码