删除/禁用对登录用户

时间:2016-08-27 00:42:00

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

我有一个mvc应用程序,我想删除AspNetUser。我正在使用await UserManager.DeleteAsync(user);这似乎在用户注销时起作用,但是如果他登录删除失败。我尝试使用await UserManager.RemoveFromRoleAsync(user.Id,"User");成功从角色中删除用户,但这似乎不会影响[Authorize]属性,直到用户再次登录。有什么办法可以完全删除当前登录的用户吗?

修改 做了一些更改,现在删除成功但是我的主要问题仍未解决,并且在登录时删除用户可以像任何其他用户一样运行。

简单的放置方式我想删除已登录的用户,因此当他点击刷新或打开新页面时,他将无法修改或访问他不应再访问的内容。

// GET: UserAcc/Delete/5
[Authorize(Roles = "Admin")]
public ActionResult Delete(int id)
{
    return View(db.UserAccs.First(x => x.Id == id));
}

// POST: UserAcc/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Delete(int id, UserAcc userAccount)
{
    try
    {
        var userAccLocal = db.UserAccs.First(x => x.Id == id);
        var lessons = db.Lessons.Where(x => x.userAccLocal.Id);
        foreach (var lesson in lessons){ db.Entry(lesson).State =EntityState.Deleted;}
        var user = UserManager.FindById(userAccLocal.ApplicationUserId);
        //TODO 
        db.Entry(userAccLocal).State = EntityState.Deleted;
        db.SaveChanges();
        //IdentityResult roleResult = await UserManager.RemoveFromRoleAsync(user.Id,"User");
        IdentityResult DeleteResult = await UserManager.DeleteAsync(user);

        return RedirectToAction("Index");
    }
    catch (Exception e)
    {
        return RedirectToAction("Index");
    }
}

1 个答案:

答案 0 :(得分:0)

在删除帐户之前,只需从所有会话中注销用户。