public async Task <LoginOutput> LoginAsync([FromServices] IHttpContextAccessor httpContextAccessor, [Required] LoginInput input) { // 获取加密后的密码 var encryptPassword = MD5Encryption.Encrypt(input.Password.Trim()); // 判断用户名或密码是否正确 var user = await _userRepository.FirstOrDefaultAsync(u => u.Account.Equals(input.Account) && u.Password.Equals(encryptPassword)); _ = user ?? throw Oops.Oh(SystemErrorCodes.u1000); // 更新登录时间 user.SigninedTime = DateTimeOffset.Now; // 映射结果 var output = user.Adapt <LoginOutput>(); // 生成 token var accessToken = output.AccessToken = JWTEncryption.Encrypt(new Dictionary <string, object> { { "UserId", user.Id }, { "Account", user.Account } }); // 生成 刷新token var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken); // 设置 Swagger 自动登录 httpContextAccessor.SigninToSwagger(accessToken); // 设置刷新 token httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken; return(output); }
public async Task <(string, string)> LoginAsync(AdminUserLoginCommand command) { var user = await bus.SendCommand(command); // 生成 token var accessToken = JWTEncryption.Encrypt(new Dictionary <string, object> { { userId, user.Id }, { userName, user.UserName } }); // 生成 刷新token var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken); return(accessToken, refreshToken); }
public async Task <(string, string)> LoginAsync(AdminUserLoginCommand command, CancellationToken cancellationToken = default) { var user = await adminUserService.LoginAsync(command, cancellationToken); // 生成 token var accessToken = JWTEncryption.Encrypt(new Dictionary <string, object> { { userId, user.Id }, { userName, user.UserName } }); // 生成 刷新token var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken); // 设置 Swagger 自动登录 Web.HttpContext.SigninToSwagger(accessToken); // 设置刷新 token Web.HttpContext.Response.Headers["x-access-token"] = refreshToken; return(accessToken, refreshToken); }
public async Task <(string, string)> LoginAsync(AdminUserLoginCommand request, CancellationToken cancellationToken = default) { var user = default(AdminUserEntity); request.Password = Encrypt.Md5By32(request.Password); var loginWay = ""; if (!Valid.IsMobileNumberSimple(request.Account)) { user = await db.Context.AdminUser.Where(c => c.UserName.Equals(request.Account)).FirstOrDefaultAsync(cancellationToken); if (user == null) { Failure.Error("账号不存在"); } loginWay = "Mobile"; } else { user = await db.Context.AdminUser.Where(c => c.Mobile.Equals(request.Account)).FirstOrDefaultAsync(cancellationToken); if (user == null) { Failure.Error("手机号码不存在"); } loginWay = "UserName"; } if (!user.Password.Equals(request.Password)) { Failure.Error("密码错误"); } if (user.Status != Status.Show) { Failure.Error("您的帐号禁止登录,请与管理员联系!"); } user.LoginCount += 1; user.LoginLastTime = DateTime.Now; user.LoginLastIp = Web.IP; user.LoginRecords.Add(new LoginRecordEntity { AdminId = user.Id, LoginIp = user.LoginLastIp, LoginTime = user.LoginLastTime, LoginWay = loginWay }); db.Update(user); // 生成 token var accessToken = JWTEncryption.Encrypt(new Dictionary <string, object> { { userId, user.Id }, { userName, user.UserName } }); // 生成 刷新token var refreshToken = JWTEncryption.GenerateRefreshToken(accessToken); // 设置 Swagger 自动登录 Web.HttpContext.SigninToSwagger(accessToken); // 设置刷新 token Web.HttpContext.Response.Headers["x-access-token"] = refreshToken; return(accessToken, refreshToken); }