public override async Task CreateAsync(AuthenticationTokenCreateContext context) { var clientid = context.Ticket.Properties.Dictionary["as:client_id"]; if (string.IsNullOrEmpty(clientid)) { return; } var refreshTokenId = Guid.NewGuid().ToString("n"); using (DataManagerService _repo = new DataManagerService()) { var client = _repo.FindClient(clientid); var refreshTokenLifeTime = context.OwinContext.Get <string>("as:clientRefreshTokenLifeTime"); var token = new Client_RefreshTokens() { RefreshToken = refreshTokenId, ClientId = client.Id, UserName = context.Ticket.Identity.Name, IssuedUtc = DateTime.UtcNow, ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime)) }; context.Ticket.Properties.IssuedUtc = token.IssuedUtc; context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc; token.ProtectedTicket = context.SerializeTicket(); var result = await _repo.AddRefreshToken(token); if (result) { context.SetToken(refreshTokenId); } } }
public async Task <bool> RemoveRefreshToken(Client_RefreshTokens refreshToken) { using (var ctx = new MicroFBEntities()) { ctx.Client_RefreshTokens.Remove(refreshToken); return(await ctx.SaveChangesAsync() > 0); } }
public async Task <bool> AddRefreshToken(Client_RefreshTokens token) { using (var ctx = new MicroFBEntities()) { var existingToken = ctx.Client_RefreshTokens.Where(tokens => tokens.UserName == token.UserName && tokens.ClientId == token.ClientId).SingleOrDefault(); if (existingToken != null) { var result = await RemoveRefreshToken(existingToken.RefreshToken); } ctx.Client_RefreshTokens.Add(token); return(await ctx.SaveChangesAsync() > 0); } }