public AuthToken GetAuthToken(LoginCredit credit) { string[] ipArr = HttpContext.Connection.RemoteIpAddress.ToString().Split(':'); string clientIp = "localhost"; if (ipArr.Length >= 4) { clientIp = ipArr[3]; } return(new AuthHelper(clientIp).GetAuthToken(credit)); }
/// <summary> /// 获取授权Token /// </summary> /// <param name="credit">登录信息</param> /// <returns></returns> public AuthToken GetAuthToken(LoginCredit credit) { try { ConfigHelper _s_config = new ConfigHelper(Constants.SecurityCfgPath); AuthToken result = new AuthToken(); if (credit.grant_type == "password") { string clientId = ValidVerifyCode(credit.verifycode1, credit.verifycode2); Login(clientId, credit.username, credit.password); ClaimsIdentity refresh_identity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, credit.username), new Claim(ClaimTypes.AuthenticationMethod, "refresh") }); result.refresh_token = GenerateJwtToken(refresh_identity, _refresh_token_expire_in, _s_config.Token_Key); } else if (credit.grant_type == "refresh_token") { credit.username = CheckRefreshToken(credit.refresh_token); result.refresh_token = credit.refresh_token; } else { throw new Exception("Invalid grant_type !"); } string account = ""; string userId = GetUserIdByAccount(credit.username, out account); ClaimsIdentity access_identity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.NameIdentifier, userId), new Claim(ClaimTypes.Name, account), new Claim(ClaimTypes.Role, GetUserRoles(userId)), new Claim(ClaimTypes.AuthenticationMethod, "access") }); result.access_token = GenerateJwtToken(access_identity, _token_expire_in, _s_config.Token_Key); result.token_type = "Bearer"; result.expires_in = WuYao.ConvertTimeStamp(DateTime.Now.AddMinutes(_token_expire_in)); return(result); } catch (Exception ex) { _log.Error(ex); throw ex; } }