2014-03-04 137 views
1

我擁有不同角色的用戶。我想根據用戶的角色提供受限制的視圖。我在我的代碼中檢查角色:用戶登錄後緩存用戶信息

bool isAdmin = UserManager.IsInRole(currentUser.Id,"admin"); 
bool isEmployee = UserManager.IsInRole(currentUser.Id,"employee"); 

對於上面的代碼工作,我需要實例化currentUser。換句話說,我需要捕獲當前登錄用戶的信息。我嘗試了類似var user = User.Identity.GetUserId();和其他許多其他信息,但找不到工作代碼。我將不勝感激任何幫助。謝謝!

更新:

這裏是我的完整方法的代碼。你們可能想看看,直到我檢查上面的例子。

public ActionResult Index() 
{ 
    var user = User.Identity.GetUserId(); 
    bool isAdmin = UserManager.IsInRole(user, "admin"); 
    bool isEmployee = UserManager.IsInRole(user, "employee"); 
    if (isAdmin) 
    { 
     return View(db.Customers.ToList()); 
    } 
    else 
    { 
     var restricted = db.Customers.Where(c => c.FirstName == "John"); 
     return View(restricted); 
    } 
} 
+0

User.Identity.GetUserId()應該工作得很好。它是一個全新的MVC5項目嗎? –

+0

這是'Authorize'屬性的用途。看看[這個例子](http://forums.asp.net/t/1791288.aspx) – Jonesopolis

+0

這裏是我的完整方法代碼。你們可能想看看,直到我檢查上面的例子。 () public ActionResult Index() var user = User.Identity.GetUserId(); bool isAdmin = UserManager.IsInRole(user,「admin」); bool isEmployee = UserManager.IsInRole(user,「employee」); if(isAdmin){ return View(db.Customers.ToList()); } else { var restricted = from c in db.Customers where c.FirstName ==「John」 select c; return查看(限制); } } –

回答

3

[Authorize]屬性應該在所需的受限制的actionController方法中實現。示例如下。

[Authorize(Roles="Admin")] 
public ActionResult Index() 
     { 
      return View(); 
     } 

此控制器方法僅限於具有角色管理員的用戶。此外,相同的動作控制器方法可以包含兩次不同的授權標籤。

1

我以某種方式想出瞭解決方案。這是工作代碼。

if(User.IsInRole("Admin")) 
{ 
    return View(db.Customers.ToList()); 
} 
else 
{ 
    return View(db.MyUserInfo.ToList()); 
}