public async Task <IActionResult> RefreshToken(string token) { CommonResult result = new CommonResult(); TokenProvider tokenProvider = new TokenProvider(_jwtModel); if (!string.IsNullOrEmpty(token)) { JwtSecurityToken jwtToken = new JwtSecurityTokenHandler().ReadJwtToken(token); #if DEBUG Log4NetHelper.Debug(jwtToken.ToJson()); #endif if (jwtToken != null) { //根据应用获取token if (jwtToken.Subject == GrantType.ClientCredentials) { TokenResult tresult = new TokenResult(); var claimlist = jwtToken?.Payload.Claims as List <Claim>; string strHost = Request.Host.ToString(); APP app = _iAPPService.GetAPP(claimlist[0].Value); if (app == null) { result.ErrCode = "40001"; result.ErrMsg = ErrCode.err40001; } else { if (!app.RequestUrl.Contains(strHost) && !strHost.Contains("localhost")) { result.ErrCode = "40002"; result.ErrMsg = ErrCode.err40002 + ",你当前请求主机:" + strHost; } else { TokenResult tokenResult = tokenProvider.GenerateToken(GrantType.ClientCredentials, app.AppId, app.AppSecret); result.ResData = tokenResult; result.ErrCode = "0"; result.Success = true; } } } // 用户账号密码登录获取token类型 if (jwtToken.Subject == GrantType.Password) { var claimlist = jwtToken?.Payload.Claims as List <Claim>; User user = await userService.GetByUserName(claimlist[2].Value); TokenResult tokenResult = tokenProvider.LoginToken(user, claimlist[0].Value); result.ResData = tokenResult; result.ErrCode = "0"; result.Success = true; } } else { result.ErrMsg = ErrCode.err40004; result.ErrCode = "40004"; } } else { result.ErrMsg = ErrCode.err40004; result.ErrCode = "40004"; } return(ToJsonContent(result)); }