public async Task <EF_Login> Login(EF_User user) { var userIdentity = await this.UserIdentity.UserIdentityVerification(user.Id, user.Enable); EF_Login result = new EF_Login() { UserName = user.UserName }; if (userIdentity.Enable == true) { result.Id = userIdentity.Id; result.UserId = userIdentity.UserId; result.UserName = userIdentity.UserName; result.Password = userIdentity.Password; var TokenStr = this.jwt.JwtGenerateToken(user); result.TokenData = TokenStr; result.Enable = true; result.Message = "登入成功"; } else { result.Enable = false; result.Message = "帳號或密碼輸入錯誤"; } return(result); }
private List <Claim> SetClaims(EF_User user) { List <Claim> result = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, user.UserName), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim("UserName", user.UserName), new Claim("Id", user.Id.ToString()) }; return(result); }
protected User Transfor(EF_User DataEntry) { return(new User() { Id = DataEntry.Id, UserName = DataEntry.UserName, UserId = DataEntry.UserId, Password = DataEntry.Password, Enable = DataEntry.Enable, CreateDate = DataEntry.CreateDate, ModifyDate = DataEntry.ModifyDate }); }
public async Task <RS_Object> UpdateUser(EF_User DataEntry) { RS_Object result = new RS_Object(); try { var Rs_Modify = await this.Daouser.UpdateUser(DataEntry); Rs_Modify.Message = Rs_Modify.Success ? $"成功更新使用者資料{Rs_Modify.Count}筆" : Rs_Modify.Message; result = Rs_Modify.Transfor("使用者"); return(result); } catch (Exception ex) { Nlogger.WriteLog(Nlogger.NType.Error, $"{ex.Message}{ex.InnerException}", ex); } return(result); }
public async Task <RS_ModifyResult> CreateUser(EF_User DataEntry) { RS_ModifyResult result = new RS_ModifyResult("Add"); try { this.dbcontext.User.Add(this.Transfor(DataEntry)); var SaveResult = await this.dbcontext.SaveChangesAsync(); result.Count = SaveResult; result.Success = true; } catch (Exception ex) { result.Message = ex.ToString(); result.Success = false; Nlogger.WriteLog(Nlogger.NType.Error, ex.Message, ex); } return(result); }
public string JwtGenerateToken(EF_User user) { List <Claim> claims = SetClaims(user); var userClaimsIdentity = new ClaimsIdentity(claims); var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(signkey)); // 建立一組對稱式加密的金鑰,主要用於 JWT 簽章之用 var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature); // HmacSha256 有要求必須要大於 128 bits,所以 key 不能太短,至少要 16 字元以上 // 建立 SecurityTokenDescriptor var tokenDescriptor = new SecurityTokenDescriptor { Issuer = issue, Subject = userClaimsIdentity, Expires = DateTime.Now.AddMinutes(expireMinutes), SigningCredentials = signingCredentials }; // 產出所需要的 JWT securityToken 物件,並取得序列化後的 Token 結果(字串格式) var tokenHandler = new JwtSecurityTokenHandler(); var securityToken = tokenHandler.CreateToken(tokenDescriptor); var serializeToken = tokenHandler.WriteToken(securityToken); return(serializeToken); }
public async Task <RS_ModifyResult> UpdateUser(EF_User DataEntry) { RS_ModifyResult result = new RS_ModifyResult("Update"); try { var clone = this.Transfor(DataEntry); var ef_find = await this.dbcontext.User.FirstAsync(b => b.Id == DataEntry.Id); this.dbcontext.Entry(ef_find).CurrentValues.SetValues(clone); this.dbcontext.User.Update(ef_find); var SaveResult = await this.dbcontext.SaveChangesAsync(); result.Count = SaveResult; result.Success = true; } catch (Exception ex) { result.Message = ex.ToString(); result.Success = false; Nlogger.WriteLog(Nlogger.NType.Error, ex.Message, ex); } return(result); }
public async Task <RS_Object> UpdateUser(EF_User DataEntry) { return(await this.user.UpdateUser(DataEntry)); }
public async Task <IActionResult> CreateUser(EF_User DataEntry) { var r = await this.user.CreateUser(DataEntry); return(new JsonResult(r)); }