У меня есть действие в контроллере для удаления моего пользователя. Когда я удаляю пользователя, пользователь все еще входит в систему. Я хотел бы выйти из системы после или до удаления учетной записи. Я попробовал несколько способов сделать это, но мне не повезло, но теперь моя идея - создать экземпляр 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");
}