/// <summary> /// /// </summary> /// <param name="context"></param> public void Create(AuthenticationTokenCreateContext context) { var clientid = context.Ticket.Properties.Dictionary["as:client_id"]; if (string.IsNullOrEmpty(clientid)) { return; } var refreshTokenId = Guid.NewGuid().ToString("n"); var userService = EngineContext.Current.Resolve <IUserService>(); var refreshTokenLifeTime = context.OwinContext.Get <string>("as:clientRefreshTokenLifeTime"); var token = new AspNetRefreshToken() { TokenId = CommonHelper.GetHashId(refreshTokenId), ClientId = clientid, Subject = 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 = userService.AddRefreshToken(token); if (result) { context.SetToken(refreshTokenId); } }
public bool AddRefreshToken(AspNetRefreshToken token) { var existingToken = _refreshTokenRepository.Table.FirstOrDefault(p => p.Subject == token.Subject && p.ClientId == token.ClientId); if (existingToken != null) { RemoveRefreshToken(existingToken); } _refreshTokenRepository.Insert(token); return(_refreshTokenRepository.SaveChanges() > 0); }
public bool RemoveRefreshToken(AspNetRefreshToken refreshToken) { var effectedRows = _refreshTokenRepository.DeleteRange(p => p.Id == refreshToken.Id); return(effectedRows > 0); }