public ActionResult Login(LoginViewModel model) { try { if (string.IsNullOrEmpty(model.account)) { throw new ArgumentNullException("account"); } if (string.IsNullOrEmpty(model.password)) { throw new ArgumentNullException("password"); } //声明 Claim[] claims = { new Claim(ClaimTypes.Name,model.account), new Claim(ClaimTypes.NameIdentifier,model.account), new Claim(ClaimTypes.Role,"normal"), }; //注意: DefaultAuthenticationTypes.ApplicationCookie否则会导致Cookie无法写入 System.Security.Claims.ClaimsIdentity claimsIdentity = new System.Security.Claims.ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie); authenticationManager.SignIn(new Microsoft.Owin.Security.AuthenticationProperties() { RedirectUri = "http://www.baidu.com/", IsPersistent = true }, claimsIdentity); return Redirect("/home/"); } catch (Exception ex) { ModelState.AddModelError("", ex); } return View(model); }
public async Task <ActionResult> Login(Models.LogInModel model) { if (!ModelState.IsValid) { return(View()); } IdentityUser user = await appUserManager.FindByNameAsync(model.Email); if (user.Id != null) { var result = appUserManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash, model.Password); if (result.Equals(PasswordVerificationResult.Success)) { ClaimsIdentity identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, user.Name), new Claim(ClaimTypes.Email, user.UserName), new Claim(ClaimTypes.Sid, user.Id) }, "ApplicationCookie" ); Microsoft.Owin.IOwinContext ctx = Request.GetOwinContext(); Microsoft.Owin.Security.IAuthenticationManager authManager = ctx.Authentication; authManager.SignIn(identity); return(Redirect(GetRedirectUrl(model.ReturnURL))); } else { ModelState.AddModelError("Invalid_Login", "Invalid login attempted, please check your username and password"); return(View(model)); } } else { ModelState.AddModelError("Invalid_Login", "Invalid login attempted, please check your username: it was not found"); return(View(model)); } }
public async Task <ActionResult> Register(Models.RegisterModel model) { //var s = ModelState.Where(x => x.Value.Errors.Count > 0).Select(x => new { x.Key, x.Value.Errors }).ToArray(); if (ModelState.IsValid) { // check if email is null or empty if (string.IsNullOrEmpty(model.Email)) { ModelState.AddModelError("empty_email", "Please enter an Email"); } // check if email is a valid email else { System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^([A-Za-z][\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); System.Text.RegularExpressions.Match match = regex.Match(model.Email); if (!match.Success) { ModelState.AddModelError("invalid_email", "Provided email is invalid"); } } // check if password is empty or whitespace if (string.IsNullOrEmpty(model.Password)) { ModelState.AddModelError("empty_password", "Please enter a password"); } // check if confirmation password is empty if (string.IsNullOrEmpty(model.ConfirmPassword)) { ModelState.AddModelError("empty_confirmpassword", "Please confirm your password"); } // check if the password and password confirmation are the same if (!model.Password.Equals(model.ConfirmPassword)) { ModelState.AddModelError("missmatching_password", "Password was different from Confirmation"); } // check if name is empty if (string.IsNullOrEmpty(model.Name)) { ModelState.AddModelError("empty_name", "Please enter an alias name"); } if (ModelState.Any(x => x.Value.Errors.Count > 0)) { return(View(model)); } IdentityUser newUser = new IdentityUser { UserName = model.Email, PasswordHash = model.Password, Name = model.Name }; var result = await appUserManager.CreateAsync(newUser, newUser.PasswordHash); if (result.Succeeded) { ClaimsIdentity identity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, newUser.Name), new Claim(ClaimTypes.Email, newUser.UserName), new Claim(ClaimTypes.Sid, newUser.Id) }, "ApplicationCookie" ); Microsoft.Owin.IOwinContext ctx = Request.GetOwinContext(); Microsoft.Owin.Security.IAuthenticationManager authManager = ctx.Authentication; authManager.SignIn(identity); return(RedirectToAction("Index", "User")); } else { ModelState.AddModelError("Invalid_Login", "An error occured processing your registration."); return(View(model)); } } else { ModelState.AddModelError("Invalid_Login", "An error occured processing your request."); return(View(model)); } }