2015-04-12 78 views
3

作为管理员,我希望能够单击某个用户并使其无法登录,并且我尝试了这种方式,但似乎无法正常工作。锁定用户

任何提示?

public void LockUser(int Id) 
    { 
     var UserMan = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 
     var user = UserMan.FindById(Id); 
     user.LockoutEnabled = true; 
     UserMan.Update(user); 
    } 
+0

请注意,标签[tag:model-view-controller]用于解决* pattern *的问题。你已经用相关的ASP.NET实现标记了它,所以你不需要(也不应该)添加模式标记。 –

+0

很确定你确实需要一个ApplicationDbContext实例并在更新用户之后调用dbContext.SaveChanges()方法。 – Claies

回答

4

你是在正确的轨道上,但需要一两件事:LockoutEnabled确实应该设置为true,但所有这样做是允许该用户锁定。你需要将他锁定。您可以通过指定锁定结束日期做到这一点,所以完整的代码如下所示:

public void LockUser(int Id) 
    { 
     var UserMan = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())); 
     var user = UserMan.FindById(Id); 
     user.LockoutEnabled = true; 
     user.LockoutEndDateUtc = DateTime.Now.AddDays(14); 
     UserMan.Update(user); 
    } 

上面的代码将出锁定用户2周。有关更多信息,请参阅this blog post