删除登录帐户并注销当前登录的用户问题

时间:2019-04-08 03:44:55

标签: c# asp.net asp.net-mvc-5 asp.net-identity

我在控制器中有一个操作要删除我的用户。删除用户后,该用户仍处于登录状态。我想在删除帐户之后或之前注销该用户。我尝试了多种方法来执行此操作,但是没有任何运气,但是现在我的想法是创建一个accountcontroller实例并调用默认的注销方法。当我创建一个新的accountcontroller时,它说在
中为null ApplicationSignInManager SignInManager {             得到{                 返回_signInManager? HttpContext.GetOwinContext()。Get();

如何将当前用户转移到帐户控制器中?这是我尝试注销的一些代码,这是我的操作方法。

[HttpPost, ActionName("DeleteUser")]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> DeleteConfirmed(string id)
        {
            if (ModelState.IsValid)
            {
                if(id==null)//(model == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }
                AccountController controller = new AccountController();
                var user = await UserManager.FindByIdAsync(id);//(model.UserId);
                var logins = user.Logins;
                var roles = await UserManager.GetRolesAsync(user.Id);
                if(logins != null)
                {
                    foreach(var login in logins)
                    {
                        await UserManager.RemoveLoginAsync(login.UserId,
                            new UserLoginInfo(
                                login.LoginProvider, login.ProviderKey));
                    }
                }
                // Supposed to only be 1 role but just in case -
                if(roles.Count() > 0)
                {
                    foreach(var r in roles)
                    {
                        var deleteRole = await UserManager.RemoveFromRoleAsync(user.Id, r);
                    }
                }
                controller.LogOff();
                //WebSecurity.Logout() doesnt find.
                //FormsAuthentication.SignOut();
                //HttpContext.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);
                //Roles.DeleteCookie();
                //Session.Clear();
                var result = await UserManager.DeleteAsync(user);
                if (result.Succeeded)
                {
                    TempData["Success"] = "User Deleted Successfully";
                    return RedirectToAction("UsersTable", "Users");
                }                
            }
            TempData["Error"] = "User Delete Unsuccessful";
            return RedirectToAction("UserDashboard", "Users");
        }

0 个答案:

没有答案