public async Task <AdminLoginOutput> AdminLogin(AdminLoginInput dto) { var output = new AdminLoginOutput { Result = dto.Result }; if (!await this.AccountRpository.ExistedAsync(dto.Model.UserName)) { output.Result.ResultCode = (int)AccountResultCode.UserNotExist; output.Result.Message = "用户不存在"; return(output); } var accounts = this.DbContext.TAccount .Where(a => a.Type == AccountType.Admin) .Where(a => a.Name == dto.Model.UserName) .Join(this.DbContext.TAdmin, m => m.Id, f => f.AccountId, (m, f) => new { m.Id, m.Password, m.Name, m.Type, f.JobNumber, } ); var account = await accounts.FirstOrDefaultAsync(); if (!dto.Model.Password.Equals(account.Password)) { output.Result.ResultCode = (int)AccountResultCode.PasswordError; output.Result.Message = "密码错误"; return(output); } var admin = await this.AdminRpository.GetAdmin(account.Id); await this.AdminRpository.SetLoginInfo(account.Id, dto.LoginIP, admin); //写登陆日志 var loginLog = new TAdminLoginLog { AccountId = admin.AccountId, LoginIp = dto.LoginIP, }; await AdminLoginLogRpository.AddAsync(loginLog); if (!await this.SaveChangesAsync()) { return(output); } output.Result.ResultCode = (int)ResultCode.Successful; return(output); }
/// <summary> /// TODO 去掉Role的硬编码 /// </summary> /// <param name="userInfo"></param> private void SignIn(AdminLoginOutput loginResult) { if (loginResult != null && loginResult.LoginAccount != null && loginResult.LoginRole != null) { var claims = new Claim[] { new Claim(ClaimTypes.Role, loginResult.LoginRole.Key), //new Claim(ClaimTypes.Role,loginResult.LoginAccount.RoleId), new Claim(ClaimTypes.Name, loginResult.LoginAccount.UserName), new Claim(ClaimTypes.Sid, loginResult.LoginAccount.Id), new Claim(ClaimTypes.GroupSid, loginResult.LoginAccount.RoleId), }; HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(new ClaimsIdentity(claims))); } }