示例#1
0
            public async Task <UserDto> Handle(Command request, CancellationToken cancellationToken)
            {
                var refreshToken = _httpContextAccessor.HttpContext.Request.Cookies["refreshToken"];

                if (refreshToken == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Token = "not found!" });
                }

                var user = await _context.Users.SingleOrDefaultAsync(u => u.Tokens.Any(t => t.RefreshToken == refreshToken));

                if (user == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { User = "******" });
                }

                var userClaims = await _userManager.GetClaimsAsync(user);

                var refreshTokenDto = _jwtGenerator.RefreshToken(user, refreshToken, userClaims.ToList());

                return(new UserDto
                {
                    DisplayName = user.DisplayName,
                    Token = refreshTokenDto.JWT,
                    UserName = user.UserName,
                    Role = user.Role
                });
            }