public async Task <IActionResult> Index(LoginInputModel model) { if (ModelState.IsValid) { if (_loginService.ValidateCredentials(model.Username, model.Password)) { var user = _loginService.FindByUsername(model.Username); var claims = new Claim[] { new Claim(JwtClaimTypes.Subject, user.Id), new Claim(JwtClaimTypes.Name, user.Username), new Claim(JwtClaimTypes.IdentityProvider, "idsvr"), new Claim(JwtClaimTypes.AuthenticationTime, DateTime.UtcNow.ToEpochTime().ToString()), }; var ci = new ClaimsIdentity(claims, "password", JwtClaimTypes.Name, JwtClaimTypes.Role); var cp = new ClaimsPrincipal(ci); await HttpContext.Authentication.SignInAsync(Constants.PrimaryAuthenticationType, cp); if (model.SignInId != null) { return(new SignInResult(model.SignInId)); } return(Redirect("~/")); } ModelState.AddModelError("", "Invalid username or password."); } var vm = new LoginViewModel(model); return(View(vm)); }
public async Task <IActionResult> Index(LoginInputModel model) { if (ModelState.IsValid) { if (_loginService.ValidateCredentials(model.Username, model.Password)) { var user = _loginService.FindByUsername(model.Username); await IssueCookie(user, "idsvr", "password"); if (model.SignInId != null) { return(new SignInResult(model.SignInId)); } return(Redirect("~/")); } ModelState.AddModelError("", "Invalid username or password."); } var vm = new LoginViewModel(model); return(View(vm)); }