public TokenUser RefreshTokenLogin(string refreshToken) { if (refreshToken != null) { Models.Users dbUser = _dbContext.Users.FirstOrDefault(x => x.RefreshToken == refreshToken); if (dbUser != null && dbUser?.RefreshTokenEndDate > DateTime.Now) { MyTokenHandler tokenHandler = new MyTokenHandler(_appSettings); Token token = tokenHandler.CreateAccessToken(); dbUser.RefreshToken = token.RefreshToken; dbUser.RefreshTokenEndDate = token.Expiration.AddMinutes(5); _dbContext.SaveChanges(); Auth.User user = new Auth.User() { Email = dbUser.UserName, Name = dbUser.Name, Password = dbUser.Password, Surname = dbUser.Surname }; return(new TokenUser() { Token = token, User = user }); } } return(null); }
public ServiceResult <TokenUser> IlanAuthenticate(string username, string password) { try { VakifDb db = new VakifDb(_appSettings.ConnStr); if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { return(new ServiceResult <TokenUser>() { isSuccessfull = true, ResultCode = 1, ResultData = null, ResultExplanation = "Kullanıcı Adı ve Şifre Boş Olamaz!" }); } var sonuc = db.GetKullanici(username, password); if (sonuc.BasariliMi)//yalnızca kullanıcı bulurusa true { Auth.User user = new Auth.User() { PersonelID = int.Parse(sonuc.Veri.Rows[0]["ID"].ToString()), TCKimlikNo = sonuc.Veri.Rows[0]["TCKimlikNo"].ToString(), Name = sonuc.Veri.Rows[0]["Adi"].ToString(), Surname = sonuc.Veri.Rows[0]["Soyadi"].ToString(), DogumTarihi = (DateTime)(sonuc.Veri.Rows[0]["DogumTarihi"]), DogumYeri = sonuc.Veri.Rows[0]["DogumYeri"].ToString(), MedeniDurumu = sonuc.Veri.Rows[0]["MedeniHali"].ToString(), Cinsiyet = sonuc.Veri.Rows[0]["Cinsiyeti"].ToString(), Email = sonuc.Veri.Rows[0]["EPosta"].ToString(), }; MyTokenHandler tokenHandler = new MyTokenHandler(_appSettings); Token token = tokenHandler.CreateAccessToken(); db.SetRefreshToken(token, sonuc.Veri.Rows[0]["ID"].ToString()); return(new ServiceResult <TokenUser>() { isSuccessfull = true, ResultCode = 0, ResultData = new TokenUser() { Token = token, User = user }, ResultExplanation = "Giriş Başarılı!" }); } else { return(new ServiceResult <TokenUser>() { isSuccessfull = true, ResultCode = 1, ResultData = null, ResultExplanation = sonuc.Mesaj }); } } catch (Exception exc) { return(new ServiceResult <TokenUser>() { isSuccessfull = false, ResultCode = 2, ResultData = null, ResultExplanation = exc.Message }); } }
public TokenUser IlanAuthenticate(string username, string password) { // var appSettingsSection = Configuration.GetSection("AppSettings"); // services.Configure<AppSettings>(appSettingsSection); // Oluşturduğumuz gizli anahtarımızı byte dizisi olarak alıyoruz. // var appSettings = appSettingsSection.Get<AppSettings>(); // var key = Encoding.ASCII.GetBytes(appSettings.SecretKey); VakifDb db = new VakifDb(); if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { throw new Exception("Kullanıcı Adı ve Şifre Boş Olamaz!"); } if (Util.TcKontrol(username)) { var sonuc = db.GetKullanici(username, password); if (sonuc.BasariliMi) { Auth.User user = new Auth.User() { Email = sonuc.Veri.Rows[0]["EPosta"].ToString(), ApplicantID = int.Parse(sonuc.Veri.Rows[0]["ID"].ToString()), Name = sonuc.Veri.Rows[0]["Adi"].ToString(), Surname = sonuc.Veri.Rows[0]["Soyadi"].ToString() }; MyTokenHandler tokenHandler = new MyTokenHandler(_appSettings); Token token = tokenHandler.CreateAccessToken(); return(new TokenUser() { Token = token, User = user }); } else { throw new Exception("Bağlantı Hatası!"); } } else { throw new Exception("Kullanıcı Bulunamadı!"); } }
public TokenUser IlanRefreshTokenLogin(string refreshToken, int applicantId) { if (refreshToken != null) { VakifDb db = new VakifDb(); var sonuc = db.CheckRefreshToken(refreshToken); if (sonuc.Veri.Rows.Count > 0 && (DateTime)(sonuc.Veri.Rows[0]["RefreshTokenEndDate"]) > DateTime.Now) { MyTokenHandler tokenHandler = new MyTokenHandler(_appSettings); Token token = tokenHandler.CreateAccessToken(); db.SetRefreshToken(token.RefreshToken, applicantId.ToString()); Auth.User user = new Auth.User() { Email = sonuc.Veri.Rows[0]["EPosta"].ToString(), ApplicantID = int.Parse(sonuc.Veri.Rows[0]["ID"].ToString()), Name = sonuc.Veri.Rows[0]["Adi"].ToString(), Surname = sonuc.Veri.Rows[0]["Soyadi"].ToString() }; return(new TokenUser() { Token = token, User = user }); } else { throw new Exception("Refresh token Süresi Doldu!"); } } else { throw new Exception("RefreshToken boş olamaz!"); } }
//Ekstra bir DTO veya model oluşturmamak için şimdilik değerlerimi geriye tuple olarak dönüyorum. // public (string username, string token)? Authenticate(string username, string password) #region orginal methods public TokenUser Authenticate(string username, string password) { //Kullanıcının gerçekten olup olmadığı kontrol ediyorum yoksa direk null dönüyorum. var dbUser = _dbContext.Users.SingleOrDefault(x => x.UserName == username && x.Password == password); if (dbUser == null) { return(null); } Auth.User user = new Auth.User() { Email = dbUser.UserName, Name = dbUser.Name, Password = dbUser.Password, Surname = dbUser.Surname }; MyTokenHandler tokenHandler = new MyTokenHandler(_appSettings); Token token = tokenHandler.CreateAccessToken(); //_appSettings. //Refresh token Users tablosuna işleniyor. dbUser.RefreshToken = token.RefreshToken; dbUser.RefreshTokenEndDate = token.Expiration.AddMinutes(3); user.RefreshToken = token.RefreshToken; user.RefreshTokenEndDate = dbUser.RefreshTokenEndDate; _dbContext.SaveChanges(); return(new TokenUser() { Token = token, User = user }); #region original /* * İlk Versiyon(REfresh TOKEN olmayan) * * // Token oluşturmak için önce JwtSecurityTokenHandler sınıfından instance alıyorum. * var _tokenHandler = new JwtSecurityTokenHandler(); * //İmza için gerekli gizli anahtarımı alıyorum. * var key = Encoding.ASCII.GetBytes(_appSettings.SecretKey); * * var tokenDescriptor = new SecurityTokenDescriptor * { * //Özel olarak şu Claimler olsun dersek buraya ekleyebiliriz. * Subject = new ClaimsIdentity(new[] * { * //İstersek string bir property istersek ClaimsTypes sınıfının sabitlerinden çağırabiliriz. * new Claim("userId", user.Id.ToString()), * new Claim(ClaimTypes.Name,user.Email), * new Claim("Name",user.Name), * new Claim("Surname",user.Surname) * }), * //Tokenın hangi tarihe kadar geçerli olacağını ayarlıyoruz. * Expires = DateTime.UtcNow.AddMinutes(15), * //Son olarak imza için gerekli algoritma ve gizli anahtar bilgisini belirliyoruz. * SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) * }; * //Token oluşturuyoruz. * var _token = _tokenHandler.CreateToken(tokenDescriptor); * //Oluşturduğumuz tokenı string olarak bir değişkene atıyoruz. * string generatedToken = _tokenHandler.WriteToken(_token); * * // Sonuçlarımızı tuple olarak dönüyoruz. * return (user.Email, generatedToken); * // return ("", ""); * */ #endregion }
public ServiceResult <TokenUser> IlanRefreshTokenLogin(string refreshToken) { try { if (refreshToken != null) { VakifDb db = new VakifDb(_appSettings.ConnStr); var sonuc = db.CheckRefreshToken(refreshToken); if (sonuc.Veri.Rows.Count > 0 && (DateTime)(sonuc.Veri.Rows[0]["RefreshTokenEndDate"]) > DateTime.Now) { MyTokenHandler tokenHandler = new MyTokenHandler(_appSettings); Token token = tokenHandler.CreateAccessToken(); string applicantId = sonuc.Veri.Rows[0]["ID"].ToString(); db.SetRefreshToken(token, applicantId); Auth.User user = new Auth.User() { PersonelID = int.Parse(sonuc.Veri.Rows[0]["ID"].ToString()), TCKimlikNo = sonuc.Veri.Rows[0]["TCKimlikNo"].ToString(), Name = sonuc.Veri.Rows[0]["Adi"].ToString(), Surname = sonuc.Veri.Rows[0]["Soyadi"].ToString(), DogumTarihi = (DateTime)(sonuc.Veri.Rows[0]["DogumTarihi"]), DogumYeri = sonuc.Veri.Rows[0]["DogumYeri"].ToString(), MedeniDurumu = sonuc.Veri.Rows[0]["MedeniHali"].ToString(), Cinsiyet = sonuc.Veri.Rows[0]["Cinsiyeti"].ToString(), Email = sonuc.Veri.Rows[0]["EPosta"].ToString(), }; return(new ServiceResult <TokenUser>() { isSuccessfull = true, ResultCode = 0, ResultData = new TokenUser() { Token = token, User = user }, ResultExplanation = "Giriş Başarılı!" }); } else { return(new ServiceResult <TokenUser>() { isSuccessfull = true, ResultCode = 1, ResultData = null, ResultExplanation = sonuc.Mesaj }); } } else { return(new ServiceResult <TokenUser>() { isSuccessfull = true, ResultCode = 1, ResultData = null, ResultExplanation = "RefreshToken boş olamaz!" }); //throw new Exception(); } } catch (Exception exc) { return(new ServiceResult <TokenUser>() { isSuccessfull = false, ResultCode = 2, ResultData = null, ResultExplanation = exc.Message }); } }