public static GetTokenResponseModel getToke(string account, string password) { GetTokenResponseModel RS = new GetTokenResponseModel(); try { //IS4 application/ x - www - form - urlencoded 這個模式 抓取RQ //FormUrlEncodedContent 方法,將其轉換成為具有 application/x-www-form-urlencoded 編碼表示格式。 client.DefaultRequestHeaders.Accept.Add( new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); // 方法一: 使用字串名稱用法 var formData = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("client_id", "socialnetwork"), new KeyValuePair <string, string>("client_secret", "secret"), new KeyValuePair <string, string>("grant_type", "password"), new KeyValuePair <string, string>("username", account), new KeyValuePair <string, string>("password", password) }); HttpResponseMessage response = client.PostAsync($"{Website.Instance.Configuration["URL:IS4"]}", formData).Result; RS = JsonConvert.DeserializeObject <GetTokenResponseModel>(response.Content.ReadAsStringAsync().Result); } catch (Exception ex) { Website.Instance.logger.FatalFormat($"getToke Error :{ex.Message},{ex.StackTrace}"); throw ex; } return(RS); }
public GetTokenResponseModel Authenticate(UserLoginRequestModel model) { var user = _userRepository.Where(x => x.Email == model.Email && x.Password == model.Password).FirstOrDefault(); // Kullanici bulunamadıysa null döner. if (user == null) { return(null); } // Authentication başarılı ise JWT token üretilir. var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_appSettings.Secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.Id.ToString()) }), Expires = DateTime.Now.AddHours(6), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var resModel = new GetTokenResponseModel(); resModel.Token = tokenHandler.WriteToken(token); resModel.ExpireTime = DateTime.Now.AddHours(6).ToString("yyyy-MM-ddTHH:mm:ssZ"); // Sifre null olarak gonderilir. resModel.User.Id = user.Id; resModel.User.UserName = user.UserName; return(resModel); }