2015-04-12 97 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