Asp.net mvc 5 如何在mvc5中使用UserManager删除用户
我使用的是mvc5,以及我使用UserManager进行的有关用户帐户管理的所有操作。它可以很好地处理角色、声明等,但我没有找到如何使用UserManager删除用户。有没有办法用UserManager删除用户?我可以使用dbset创建数据库上下文,然后将其从该上下文中删除,但我不希望为一个删除方法创建dbcontext、userclass等。在1.0版的UserManager中不支持删除,但在即将发布的2.0版中支持删除,在当前的2.0夜间版本中,如果您想提前预览更改。使用更新的asp.net标识,我有以下代码:Asp.net mvc 5 如何在mvc5中使用UserManager删除用户,asp.net-mvc-5,asp.net-identity,Asp.net Mvc 5,Asp.net Identity,我使用的是mvc5,以及我使用UserManager进行的有关用户帐户管理的所有操作。它可以很好地处理角色、声明等,但我没有找到如何使用UserManager删除用户。有没有办法用UserManager删除用户?我可以使用dbset创建数据库上下文,然后将其从该上下文中删除,但我不希望为一个删除方法创建dbcontext、userclass等。在1.0版的UserManager中不支持删除,但在即将发布的2.0版中支持删除,在当前的2.0夜间版本中,如果您想提前预览更改。使用更新的asp.net
public UserManagerController()
: this(new UserManager<User>(new UserStore<User>(new ApplicationDbContext())))
{
}
public UserManagerController(UserManager<User> userManager)
{
UserManager = userManager;
}
public UserManager<User> UserManager { get; private set; }
public async Task<ActionResult> Delete (string id)
{
var userContext = new ApplicationDbContext();
var user = UserManager.Users.SingleOrDefault(u => u.Id == id);
var userStore = new UserStore<User>(userContext);
await UserManager.DeleteAsync(user);
// var userManager = new UserManager<User>(userStore);
// await userManager.DeleteAsync(user);
return RedirectToAction("Index");
}
公共用户管理器控制器()
:此(新的UserManager(新的UserStore(新的ApplicationDbContext()))
{
}
公共用户管理器控制器(用户管理器用户管理器)
{
UserManager=UserManager;
}
公共用户管理器用户管理器{get;private set;}
公共异步任务删除(字符串id)
{
var userContext=new ApplicationDbContext();
var user=UserManager.Users.SingleOrDefault(u=>u.Id==Id);
var userStore=新的userStore(userContext);
等待UserManager.DeleteAsync(用户);
//var userManager=newusermanager(userStore);
//等待userManager.DeleteAsync(用户);
返回操作(“索引”);
}
现在,这个将删除用户。也不需要从UserRoles表中删除,因为UserManager.DeleteAsync(用户)负责删除
希望这能帮助一些人。我花了一些时间弄明白我为什么会出错
Trond我对上述答案有疑问,尽管我能找出问题所在。我不断得到一个级联错误。基本上是删除用户而不删除角色。DeleteAsync没有为我这样做(我有最新的Identity Framework构建)。最后将userid和role都传递到我的代码中,从角色中删除用户,然后删除用户。看起来很好用
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Delete(string id, string role)
{
// Check for for both ID and Role and exit if not found
if (id == null || role == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
// Look for user in the UserStore
var user = UserManager.Users.SingleOrDefault(u => u.Id == id);
// If not found, exit
if (user == null)
{
return HttpNotFound();
}
// Remove user from role first!
var remFromRole = await UserManager.RemoveFromRoleAsync(id, role);
// If successful
if (remFromRole.Succeeded)
{
// Remove user from UserStore
var results = await UserManager.DeleteAsync(user);
// If successful
if (results.Succeeded)
{
// Redirect to Users page
return RedirectToAction("Index", "Users", new {area = "Dashboard"});
}
else
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
else
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
[HttpPost,ActionName(“删除”)]
[ValidateAntiForgeryToken]
公共异步任务删除(字符串id、字符串角色)
{
//检查ID和角色,如果找不到则退出
if(id==null | | role==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
//在UserStore中查找用户
var user=UserManager.Users.SingleOrDefault(u=>u.Id==Id);
//如果未找到,请退出
if(user==null)
{
返回HttpNotFound();
}
//首先从角色中删除用户!
var remFromRole=await UserManager.RemoveFromRoleAsync(id,role);
//如果成功
if(remFromRole.successed)
{
//从用户存储中删除用户
var results=await UserManager.deleteAncy(用户);
//如果成功
if(results.successed)
{
//重定向到用户页面
返回RedirectToAction(“Index”,“Users”,new{area=“Dashboard”});
}
其他的
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
其他的
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
}
当发布更新标识2.0.0时,现在可以复制“是”。我正在用它