| 1234567891011121314151617181920212223242526272829303132333435363738 |
- using Microsoft.Owin.Security.Infrastructure;
- using System;
- using System.Collections.Concurrent;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ShwasherSys
- {
- public class OpenRefreshTokenProvider: AuthenticationTokenProvider
- {
- private static ConcurrentDictionary<string, string> _refreshTokens = new ConcurrentDictionary<string, string>();
- /// <summary>
- /// 生成 refresh_token
- /// </summary>
- public override void Create(AuthenticationTokenCreateContext context)
- {
- context.Ticket.Properties.IssuedUtc = DateTime.UtcNow;
- context.Ticket.Properties.ExpiresUtc = DateTime.UtcNow.AddDays(60);
- context.SetToken(Guid.NewGuid().ToString("n") + Guid.NewGuid().ToString("n"));
- _refreshTokens[context.Token] = context.SerializeTicket();
- }
- /// <summary>
- /// 由 refresh_token 解析成 access_token
- /// </summary>
- public override void Receive(AuthenticationTokenReceiveContext context)
- {
- if (_refreshTokens.TryGetValue(context.Token, out string ticketData))
- {
- context.DeserializeTicket(ticketData);
- }
- }
- }
- }
|