public async Task <JsonResult> Login(SystemUserLoginInput input) { var operateStatus = new OperateStatus(); string tokenData = String.Empty; //验证数据库信息 var info = await _userInfoLogic.CheckUserByCodeAndPwd(input); if (info.Data != null) { ICollection <string> roles = new List <string>(); if (info.Data.IsAdmin) { //查询顶级组织机构 var orgs = (await _organizationLogic.GetSystemOrganizationByPid(new IdInput(Guid.Empty))).FirstOrDefault(); if (orgs != null) { info.Data.OrganizationId = Guid.Parse(orgs.id.ToString()); info.Data.OrganizationName = orgs.text; } roles.Add("Admin"); } var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtConfig.Value.Secret)); var header = new JwtHeader(new SigningCredentials(key, SecurityAlgorithms.HmacSha256)); var issuer = _jwtConfig.Value.Issuer; var loginTime = DateTime.Now; var claims = new[] { new Claim("Name", info.Data.Name), new Claim("Code", info.Data.Code), new Claim("OrganizationId", info.Data.OrganizationId == Guid.Empty?"":info.Data.OrganizationId.ToString()), new Claim("OrganizationName", info.Data.OrganizationName ?? ""), new Claim("LoginId", info.Data.LoginId.ToString()), new Claim(JwtRegisteredClaimNames.Jti, info.Data.UserId.ToString()) }.Concat(roles.Select(role => new Claim("role", role))); JwtPayload payload = input.Remberme ? new JwtPayload(issuer, null, claims, null, loginTime.AddYears(1)) : new JwtPayload(issuer, null, claims, null, loginTime.AddMinutes(60)); var token = new JwtSecurityToken(header, payload); operateStatus.ResultSign = ResultSign.Successful; tokenData = new JwtSecurityTokenHandler().WriteToken(token); WriteLoginLog(info.Data); } else { operateStatus.ResultSign = ResultSign.Error; operateStatus.Message = info.Message; } return(Json(new { operateStatus.ResultSign, operateStatus.Message, Data = tokenData, OrganizationId = info.Data?.OrganizationId ?? Guid.Empty, UserName = info.Data != null ? info.Data.Name : "", OrganizationName = info.Data != null ? info.Data.OrganizationName : "", Code = info.Data != null ? info.Data.Code : "", HeadImage = info.Data != null ? info.Data.HeadImage : "" })); }
public async Task <JsonResult> Submit(UserLoginInput input) { var operateStatus = new OperateStatus(); try { //获取生成验证码的结果值 var verifyCode = VerifyCodeUtil.GetVerifyCode(); //判断录入验证码和生成的验证码值是否相等 if (input.Verify != verifyCode) { operateStatus.ResultSign = ResultSign.Error; operateStatus.Message = "验证码错误"; return(Json(operateStatus)); } //验证数据库信息 var info = await _userInfoLogic.CheckUserByCodeAndPwd(input); if (info.Data != null) { var principalUser = new PrincipalUser { UserId = info.Data.UserId, Code = info.Data.Code, Name = info.Data.Name, OrganizationId = info.Data.OrganizationId, OrganizationName = info.Data.OrganizationName }; principalUser.LoginId = Guid.NewGuid(); //写入Cookie信息 FormAuthenticationExtension.SetAuthCookie(principalUser.UserId.ToString(), principalUser, input.Remberme); //是否具有返回路径 if (Url.IsLocalUrl(input.ReturnUrl) && input.ReturnUrl.Length > 1 && input.ReturnUrl.StartsWith("/") && !input.ReturnUrl.StartsWith("//") && !input.ReturnUrl.StartsWith("/\\")) { info.ResultSign = ResultSign.Successful; info.Message = input.ReturnUrl; } //写入日志 WriteLoginLog(principalUser.LoginId); } return(Json(info)); } catch (Exception ex) { operateStatus.Message = ex.Message; return(Json(operateStatus)); } }