Удалите зарегистрированный аккаунт и выйдите из текущего пользователя - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть действие в контроллере для удаления моего пользователя. Когда я удаляю пользователя, пользователь все еще входит в систему. Я хотел бы выйти из системы после или до удаления учетной записи. Я попробовал несколько способов сделать это, но мне не повезло, но теперь моя идея - создать экземпляр accountcontroller и вызвать метод выхода из системы по умолчанию. Когда я создаю новый accountcontroller, он говорит, что его ноль в
ApplicationSignInManager SignInManager { получить { вернуть _signInManager ?? . HttpContext.GetOwinContext () Получить ();

Как я могу передать моего текущего пользователя в контроллер аккаунта? Вот часть кода, который я пытался выйти из системы, и вот мой метод действия.

[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");
        }
...