public async Task<ActionResult> Create(RegisterViewModel vm) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = vm.Email, Email = vm.Email }; var adminresult = await userManager.CreateAsync(user, vm.Password); //Add User to the selected Claims if (adminresult.Succeeded) { if (vm.selectedClaims != null) { foreach (var item in vm.selectedClaims) { var claim = new Claim(item, true.ToString()); var result = await userManager.AddClaimAsync(user.Id, claim); if (!result.Succeeded) { ModelState.AddModelError("", result.Errors.First()); return View(vm); } } } } else { ModelState.AddModelError("", adminresult.Errors.First()); return View(vm); } return RedirectToAction("Index"); } return View(vm); }
private async Task SignInAsync(ApplicationUser user, bool isPersistent) { //Comentado devido ao uso do SignalR //var sessionKey = ApplicationSignInManager.getSessionKey(user,Request); //await userManager.AddSessionAsync(user, sessionKey); AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie); AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(userManager)); }
/// <summary> /// Authenticar o usuario e registra a sessao do mesmo /// </summary> /// <param name="user">O usuario a ser logado.</param> /// <param name="isPersistent"></param> /// <returns></returns> private async Task SignInAsync(ApplicationUser user, bool isPersistent) { //Comentado devido ao uso do SignalR //var sessionKey = ApplicationSignInManager.getSessionKey(user, Request); //await userManager.AddSessionAsync(user, sessionKey); // Zerando contador de logins errados. await userManager.ResetAccessFailedCountAsync(user.Id); // Coletando Claims externos (se houver) ClaimsIdentity ext = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie); AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie, DefaultAuthenticationTypes.TwoFactorCookie, DefaultAuthenticationTypes.ApplicationCookie); AuthenticationManager.SignIn( new AuthenticationProperties { IsPersistent = isPersistent }, // Criação da instancia do Identity e atribuição dos Claims await user.GenerateUserIdentityAsync(userManager, ext) ); }
/// <summary> /// Valida se o securityStamp cadastrado no banco e igual ao do usuario atual. /// </summary> /// <param name="manager"></param> /// <param name="user"></param> /// <param name="context"></param> /// <returns>true: se for igual. false: caso seja diferente.</returns> private static async Task<bool> VerifySecurityStampAsync(ApplicationUserManager manager, ApplicationUser user, CookieValidateIdentityContext context) { string stamp = context.Identity.FindFirstValue("AspNet.Identity.SecurityStamp"); return (stamp == await manager.GetSecurityStampAsync(context.Identity.GetUserId())); }
public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return RedirectToAction("Index", "Manage"); } if (ModelState.IsValid) { // Pegar a informação do login externo. var info = await authenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return View("ExternalLoginFailure"); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await userManager.CreateAsync(user); if (result.Succeeded) { result = await userManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { await signInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); var userext = userManager.FindByEmailAsync(model.Email); await SignInAsync(userext.Result, false); return RedirectToLocal(returnUrl); } } AddErrors(result); } ViewBag.ReturnUrl = returnUrl; return View(model); }