2011-11-04 42 views
2

我有一個與mvc 3 vb.net應用程序中的角色有關的問題..我有Admin,Developer,PowerAdmin角色..如果我想限制基於角色的視圖選項我一直在使用,如果在視圖中陳述隱藏鏈接都在一起,如:在MVC 3中使用角色3 VB.NET應用程序

@If HttpContext.Current.User.IsInRole("Admin") And Request.IsAuthenticated Then 
@<li><a href="@Url.Content("~/Admin/")">Administrative Tools</a></li> 
End If 

我也裝飾在地方與授權控制器動作。問題是這樣說我有幾個動作,應該只能說一個用戶誰是所有三個角色,甚至任何組合中的兩個角色..我只是簡單地嵌套在視圖中的if語句來隱藏這些視圖項?關於控制器的功能是什麼..是否有可能裝飾控制器功能的東西,如

<Authorize(Roles:="Admin" + "PowerAdmin")> 

,然後有隻能由具有兩個角色訪問該功能????

+0

您可能正在尋找這樣的事情:http://stackoverflow.com/questions/1148312/asp-net-mvc-decorate-authorize-with-multiple -enums – Keith

+0

我不明白爲什麼當ASP.NET和mvc 3建立角色管理時,我不得不使用枚舉任何東西......是不是有一些方法可以在控制器函數的頂部使用一個乾淨的 ???看起來像很多箍跳躍,只是確保一個用戶在這兩個角色.. – Skindeep2366

回答

2

簡單寫兩條獨立的線路:

<Authorize(Roles := "Admin")> _ 
<Authorize(Roles := "PowerAdmin")> _ 
+0

這就是我認爲它應該是。但我不確定..在黑暗中是否會看到用戶是否在管理員,而不在乎PowerAdmin的基本角色..謝謝.. – Skindeep2366

-5

嘗試在Enum上搜索;這是這類事情的完美課堂。

希望這會讓你走上正軌。

+1

這實在沒有什麼比「讓我谷歌爲你」的答案。 –

+0

這可能是「讓我谷歌爲你」的答案。但我認爲,枚舉類是做到這一點的方式。 我無法輸入任何非常好的例子的原因是因爲我對它也很陌生。最近在我的新工作中發現了一些項目。 而且我很抱歉不知道你只能在這裏給出完整的複製粘貼答案。 tbh,我的回答是,我只是說你應該使用Enum類,因爲它更加有用而且完全沒有任何困難。 我在這裏試圖做的就是指出某人朝着正確的方向前進。對不起,如果這沒有讓你滿意。 –

+1

我不是說在這裏放一個完整的複製/粘貼答案,我要求你直接回答這個問題。如果你有使用Enum來實現這一點的想法,那麼請詳細說明你的想法(如果你還沒有嘗試過,使用僞代碼)。如果您將答案修改得更徹底並深思熟慮,請隨時回覆我。我很樂意將我的倒票改爲更好的答案。 –