public async Task <IActionResult> Login([FromBody] LoginInDto loginData) { if (string.IsNullOrWhiteSpace(loginData.Name) || loginData.Name.Length < 4 || loginData.Name.Length > 20) { return(BadRequest("Введен некорректный логин")); } var claims = new [] { new Claim(ClaimTypes.NameIdentifier, Guid.NewGuid().ToString()), new Claim(ClaimTypes.Name, loginData.Name), }; var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), new AuthenticationProperties { IsPersistent = true, AllowRefresh = true, ExpiresUtc = DateTime.UtcNow.Add(TimeSpan.FromHours(24)) }); return(new ObjectResult(new { name = loginData.Name, identificator = claims[0].Value })); }
public async Task <object> Login(LoginInDto dto) { var user = await _baseLogic.Of <User>() .GetQueryable(x => x.Login == dto.Login && !x.IsDeleted) .Include(x => x.UserRoles) .ThenInclude(x => x.Role) .FirstOrDefaultAsync(); if (user == default) { throw new ArgumentException("Пользователь не найден"); } if (user.IsBlocked) { throw new ArgumentException("Пользователь заблокирован, обратитесь к администратору"); } var pwdhash = HashPwd(dto.Password); if (user.Password != pwdhash) { user.PasswordTryCount++; if (user.PasswordTryCount >= 5) { user.IsBlocked = true; } await _baseLogic.Of <User>().Update(user); throw new ArgumentException("Вами введен некорректный пароль. Введите пароль еще раз"); } // сброс пароля user.PasswordTryCount = 0; user.LastInviteDate = DateTime.Now; var accessToken = _identityLogic.GenerateAccessToken(user); var refreshToken = _identityLogic.GenerateRefreshToken(user); user.RefreshToken = refreshToken; await _baseLogic.Of <User>().Update(user); return(new { accessToken, refreshToken }); }
public async Task <IActionResult> Login([FromBody] LoginInDto login) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var _ = await _logic.Login(login); return(Ok(_)); } catch (Exception e) { return(ExceptionResult(e)); } }
public ApiReponse <object> LoginIn(LoginInDto model) { var data = _crud.LoginIn(model); var token = _cache.Get <string>($"token_{data.Id.ToString()}"); if (string.IsNullOrEmpty(token)) { token = _jwt.JwtSecurityToken(data.Id, data.RoleId.ToString()); _cache.Set($"token_{data.Id.ToString()}", token, TimeSpan.FromHours(2)); } data.Token = token; return(new ApiReponse <object>(data)); }
public dynamic LoginIn(LoginInDto model) { model.Password = model.Password.Md5Encrypt(); var entity = Repository.SingleOrDefault(item => item.UserName == model.UserName && item.Password == model.Password); if (entity == null) { throw new MarukoException("账号或者密码错误"); } return(new { entity.Id, entity.RoleId, entity.UserName, }); }