2010-08-04 243 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); 
    }