2011-09-16 25 views
0

我對.net和mvc3很新。mvc3和實體 - 基於角色的基本查詢

在我的應用程序中,我有兩個不同的角色,Admin和基本用戶。管理員可以查看所有內容,但用戶只能看到鏈接到他們的項目。

我在我的控制器這樣做:

private MembershipExtContext db = new MembershipExtContext(); 
[Authorize] 
public ViewResult Index() 
    { 
     var thing1s = db.Thing1.Include(i => i.Thing2); 
     return View(thing1s.ToList()); 
    } 

我想它使基本查詢(db.Thing1.Include(I => i.Thing2);)僅返回項目的當前用戶被允許看到。否則,我需要爲每個角色分別進行查詢。

這可能嗎?如果是這樣,怎麼樣?

如果需要,我先使用mvc3和entity4代碼。要做到這一點

回答

0

一種方法是

if(Roles.IsUserInRole(User.Identity.Name, "Admin") 
{ 
    do stuff 
    return View(); 
} 
else 
{ 
    //do non admin stuff 
    return View(); 
} 

這裏假設你的管理員用戶稱爲在你的角色,「管理員」和你只有兩個角色類型。

+0

是的。我知道這個。但那不是我真正想問的。我想更改查詢的結果。比如編輯我的模型或dbcontext或類似的東西的getter。這樣我就不必將這些代碼放在我的每一個控制器函數中,我只需要改變一件事情。 – lovefaithswing

+0

你的數據庫是否知道角色?如果是這樣,你可以限制你的查詢結果基於當前的用戶角色,否則這是你需要做到這一點。將它放在模型中並不適合分離問題,因爲您的模型現在將與控制器緊密耦合。 – samack