2010-08-04 251 views
0

我該如何使用MVC.NET來完成這項工作?我在網上找到了關於如何在ASP.NET中實現它的資源,但是我還沒有找到在MVC.NET中實現它的方法(儘管我是一名MVC.NET新手)。我可以使用[授權]屬性生成401響應,但我不知道在此之後要做什麼。使用MVC.NET和Windows身份驗證以其他用戶身份登錄?

[編輯] 在玩過一段時間後,我發現如果我能找到一種方法來強制應用程序重新進行身份驗證並顯示登錄對話框,我可能會這樣做。我認爲,如果我將Authorization屬性設置爲[Authorize(Users =「NooneAllowed」)],它應該顯示登錄對話框。是否有另一種方法來強制它重新進行驗證,因爲上面的黑客幾乎沒有用,因爲它仍然會拒絕訪問。

+0

在MVC或任何其他使用標準身份驗證模型(來自ASP.NET)的框架中,邏輯上應該沒有多少變化。你確定你沒有受到緩存/ cookie問題的困擾嗎? – JcMaltaDev 2010-08-04 15:18:45

+0

如果您以編程方式註銷('SignOut')當前用戶,則需要進行身份驗證的操作的下一個請求將要求用戶再次登錄。那是你要的嗎? – bzlm 2010-08-05 08:23:34

回答

0

你必須使用下面的代碼

Roles.CreateRole(RoleName); 
Roles.AddUserToRole(UserName, RoleName); 

角色名稱爲「管理員」或「用戶」或「僱員」或「客戶」或什麼都來ASIGN上登記的時間每個用戶的角色,你希望可能。 你應該在註冊時完成它。

然後你定義像這樣來區分用戶的使用。 如果您需要管理員只需要訪問下面的方法,那麼你必須將其定義爲「管理員」的角色

[HttpGet] 
    [Authorize(Roles = "Admin")] 
    public ActionResult ViewInventoryList() 
    { 
     List<Inventory> inventoryList = new List<Inventory>(); 
     inventoryList = connectDatabase.SelectInventory(); 
     return View("ViewInventory", inventoryList); 
    } 

如果需要用戶只需要訪問下面的方法,那麼你必須定義角色as「User」

[HttpGet] 
    [Authorize(Roles = "User")] 
    public ActionResult ViewInventoryList() 
    { 
     List<Inventory> inventoryList = new List<Inventory>(); 
     inventoryList = connectDatabase.SelectInventory(); 
     return View("ViewInventory", inventoryList); 
    }