public async Task <IActionResult> SignInAsync([FromForm] Models.AccountViewModels.LoginViewModel loginModel) { if (!ModelState.IsValid) { return(new StatusCodeResult(StatusCodes.Status400BadRequest)); } var userInfo = new SparkTodo.Models.UserAccount() { Email = loginModel.Email }; var result = new Models.JsonResponseModel <JWT.TokenEntity>(); Microsoft.AspNetCore.Identity.SignInResult signinResult = await _signInManager.PasswordSignInAsync(loginModel.Email, loginModel.Password, true, lockoutOnFailure : false); if (signinResult.Succeeded) { _logger.LogInformation(1, "User logged in."); var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_apiSetting.Value.SecretKey)); var options = new JWT.TokenOptions { Audience = "SparkTodoAudience", Issuer = "SparkTodo", SigningCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256), }; var token = new TokenProvider(options).GenerateToken(HttpContext, userInfo.Email); userInfo = await _userRepository.FetchAsync(u => u.Email == loginModel.Email); var userToken = new UserTokenEntity { AccessToken = token.AccessToken, ExpiresIn = token.ExpiresIn, UserEmail = userInfo.Email, UserId = userInfo.UserId, UserName = userInfo.UserName }; result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = userToken, Msg = "µÇ¼³É¹¦", Status = Models.JsonResponseStatus.Success }; } else { if (signinResult.IsLockedOut) { result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = null, Msg = "µÇ¼ʧ°Ü£¬ÕË»§Òѱ»Ëø¶¨", Status = Models.JsonResponseStatus.RequestError }; } else { result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = null, Msg = "µÇ¼ʧ°Ü", Status = Models.JsonResponseStatus.AuthFail }; } } return(Json(result)); }
public async Task <IActionResult> SignInAsync([FromBody] Models.AccountViewModels.LoginViewModel loginModel) { if (!ModelState.IsValid) { return(new StatusCodeResult(StatusCodes.Status400BadRequest)); } var userInfo = new SparkTodo.Models.UserAccount() { Email = loginModel.Email }; var result = new Models.JsonResponseModel <JWT.TokenEntity>(); var signinResult = await _signInManager.PasswordSignInAsync(loginModel.Email, loginModel.Password, true, lockoutOnFailure : false); if (signinResult.Succeeded) { _logger.LogInformation("User logged in."); userInfo = await _userRepository.FetchAsync(u => u.Email == loginModel.Email); var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Jti, ObjectIdGenerator.Instance.NewId()), new Claim(JwtRegisteredClaimNames.Sub, userInfo.Email), new Claim(JwtRegisteredClaimNames.NameId, userInfo.Id.ToString()), }; var token = _tokenGenerator.GenerateToken(claims); var userToken = new UserTokenEntity { AccessToken = token.AccessToken, ExpiresIn = token.ExpiresIn, UserEmail = userInfo.Email, UserId = userInfo.Id, UserName = userInfo.UserName }; result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = userToken, Msg = "", Status = Models.JsonResponseStatus.Success }; } else { if (signinResult.IsLockedOut) { result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = null, Msg = "Account locked out", Status = Models.JsonResponseStatus.RequestError }; } else { result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = null, Msg = "failed to authenticate", Status = Models.JsonResponseStatus.AuthFail }; } } return(Json(result)); }
public async Task <IActionResult> SignUpAsync([FromForm] Models.AccountViewModels.RegisterViewModel regModel) { if (!ModelState.IsValid) { return(new StatusCodeResult(StatusCodes.Status400BadRequest)); } var userInfo = new SparkTodo.Models.UserAccount() { UserName = regModel.Email, Email = regModel.Email, EmailConfirmed = true,//ĬÈϲ»ÐèÒªÑéÖ¤ÓÊÏ䣬עÊÍÒÔÆôÓà CreatedTime = DateTime.Now }; var result = new Models.JsonResponseModel <JWT.TokenEntity>(); var signupResult = await _userManager.CreateAsync(userInfo, regModel.Password); if (signupResult.Succeeded) { _logger.LogInformation(3, "User created a new account"); var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_apiSetting.Value.SecretKey)); var options = new JWT.TokenOptions { Audience = "SparkTodoAudience", Issuer = "SparkTodo", SigningCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256), }; var token = new TokenProvider(options).GenerateToken(HttpContext, userInfo.Email); userInfo = await _userRepository.FetchAsync(u => u.Email == regModel.Email); var userToken = new UserTokenEntity { AccessToken = token.AccessToken, ExpiresIn = token.ExpiresIn, UserEmail = userInfo.Email, UserId = userInfo.UserId, UserName = userInfo.UserName }; result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = userToken, Msg = "×¢²á³É¹¦", Status = Models.JsonResponseStatus.Success }; } else { result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = null, Msg = "sign up failed," + String.Join(",", signupResult.Errors.Select(e => e.Description).ToArray()), Status = Models.JsonResponseStatus.ProcessFail }; } return(Json(result)); }
public async Task <IActionResult> SignUpAsync([FromBody] Models.AccountViewModels.RegisterViewModel regModel) { if (!ModelState.IsValid) { return(new StatusCodeResult(StatusCodes.Status400BadRequest)); } var userInfo = new SparkTodo.Models.UserAccount() { UserName = regModel.Email, Email = regModel.Email, EmailConfirmed = true, CreatedTime = DateTime.Now }; var result = new Models.JsonResponseModel <JWT.TokenEntity>(); var signupResult = await _userManager.CreateAsync(userInfo, regModel.Password); if (signupResult.Succeeded) { _logger.LogInformation(3, "User created a new account"); userInfo = await _userRepository.FetchAsync(u => u.Email == regModel.Email); var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Jti, ObjectIdGenerator.Instance.NewId()), new Claim(JwtRegisteredClaimNames.Sub, userInfo.Email), new Claim(ClaimTypes.Name, userInfo.UserName), }; var token = _tokenGenerator.GenerateToken(claims); var userToken = new UserTokenEntity { AccessToken = token.AccessToken, ExpiresIn = token.ExpiresIn, UserEmail = userInfo.Email, UserId = userInfo.Id, UserName = userInfo.UserName }; result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = userToken, Msg = "", Status = Models.JsonResponseStatus.Success }; } else { result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = null, Msg = "sign up failed," + string.Join(",", signupResult.Errors.Select(e => e.Description).ToArray()), Status = Models.JsonResponseStatus.ProcessFail }; } return(Json(result)); }
public async Task <IActionResult> SignInAsync([FromBody] Models.AccountViewModels.LoginViewModel loginModel) { JsonResponseModel result; var signinResult = await _signInManager.PasswordSignInAsync(loginModel.Email, loginModel.Password, true, lockoutOnFailure : false); if (signinResult.Succeeded) { var userInfo = await _userRepository.FetchAsync(u => u.Email == loginModel.Email); var claims = new[] { new Claim(JwtRegisteredClaimNames.Jti, GuidIdGenerator.Instance.NewId()), new Claim(JwtRegisteredClaimNames.Sub, userInfo.Email), new Claim(JwtRegisteredClaimNames.NameId, userInfo.Id.ToString()), }; var token = _tokenGenerator.GenerateToken(claims); var userToken = new UserTokenEntity { AccessToken = token.AccessToken, ExpiresIn = token.ExpiresIn, UserEmail = userInfo.Email, UserId = userInfo.Id, UserName = userInfo.UserName }; result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = userToken, Msg = "", Status = Models.JsonResponseStatus.Success }; } else { if (signinResult.IsLockedOut) { result = new Models.JsonResponseModel <JWT.TokenEntity> { Msg = "Account locked out", Status = Models.JsonResponseStatus.RequestError }; } else { result = new Models.JsonResponseModel <JWT.TokenEntity> { Msg = "failed to authenticate", Status = Models.JsonResponseStatus.AuthFail }; } } return(Ok(result)); }
public async Task <IActionResult> SignUpAsync([FromBody] Models.AccountViewModels.RegisterViewModel regModel) { var userInfo = new SparkTodo.Models.UserAccount() { UserName = regModel.Email, Email = regModel.Email, EmailConfirmed = true, CreatedTime = DateTime.UtcNow }; JsonResponseModel <TokenEntity> result; var signUpResult = await _userManager.CreateAsync(userInfo, regModel.Password); if (signUpResult.Succeeded) { userInfo = await _userRepository.FetchAsync(u => u.Email == regModel.Email); var claims = new[] { new Claim(JwtRegisteredClaimNames.Jti, GuidIdGenerator.Instance.NewId()), new Claim(JwtRegisteredClaimNames.Sub, userInfo.Email), new Claim(JwtRegisteredClaimNames.NameId, userInfo.Id.ToString()), }; var token = _tokenGenerator.GenerateToken(claims); var userToken = new UserTokenEntity { AccessToken = token.AccessToken, ExpiresIn = token.ExpiresIn, UserEmail = userInfo.Email, UserId = userInfo.Id, UserName = userInfo.UserName }; result = new Models.JsonResponseModel <JWT.TokenEntity> { Data = userToken, Msg = "", Status = Models.JsonResponseStatus.Success }; } else { result = new Models.JsonResponseModel <JWT.TokenEntity> { Msg = "sign up failed," + string.Join(",", signUpResult.Errors.Select(e => e.Description).ToArray()), Status = Models.JsonResponseStatus.ProcessFail }; } return(Ok(result)); }