コード例 #1
0
        public async Task <IActionResult> RefreshToken()
        {
            var oldToken = Request.Headers["Authorization"].ToString();

            // 解析旧Token
            var claimPrincipal = _jwtFactory.CanRefresh(oldToken?.Replace("Bearer ", string.Empty));

            // token刷新失败
            if (claimPrincipal == null)
            {
                ModelState.AddModelError("Token", ErrorMessages.Account_E007);
                return(BadRequest(ModelState));
            }

            // 根据token保存的用户名取得用户,更新用户数据
            var userName = claimPrincipal.GetUserName();
            var user     = await _accountService.FindUserAsync(userName);

            var loginResult = await GetLoginResult(user);

            return(Ok(loginResult));
        }