回答
或者我應該使用檢查 教職員頁自身上而不是 行動中的作用,如果是這樣有人可以PLZ告訴我 如何檢查視圖頁
您需要做兩個。檢查操作的角色作爲安全措施,並檢查視圖上的角色以啓用/禁用特定控件。
在您查看頁面檢查角色的長型是
HttpContext.Current.User.IsInRole("Administrator")
許多開發商將創建頁面輔助方法,這樣你就可以用更多的東西簡潔爲您的應用落得像
public static bool IsAdmin(this ViewUserControl pg)
{
return pg.Page.User.IsInRole("Administrator")
}
那麼在你看來,你可以使用this.IsAdmin()
爲了保持你的看法凌亂考慮使用部分景色
<% if (IsAdmin())
{
Html.RenderPartial("AdminPanel");
}
else
{
Html.RenderPartial("UserPanel");
}
%>
在沒有研究確切機制asp.net MVC使用的角色,我會尖叫的不施加任何業務邏輯的觀點是,你在視圖中
一般來說,我會同意這一點,但我並不那麼教條,以至於我會堅持要生成一個完全不同的視圖,以便根據用戶角色更改添加/刪除特定元素。 – tvanfosson 2009-01-03 16:12:40
我做什麼,如果你正在檢查的角色米不熟悉ASP.NET MVC(但),但你不能在視圖中做一些條件過濾器?如果Controller將角色傳遞給View,那麼如果用戶是管理員,則應該能夠執行條件過濾器並顯示某個代碼塊。如果你想顯示一個完全獨立的頁面,那麼你會有多個視圖,否則你可以使用一個,並做一些條件。
在Ruby on Rails的它會是這樣的(對不起,我不知道ASP.NET MVC真的還):
<% if @user.admin? # is the user an admin %>
<h3>Admin Tools</h3>
<% end %>
<p>Regular site content</p>
在Rails中,你會加載從諧音額外的內容; ASP.NET MVC有類似的東西,但我忘記了它的名字。也許看看那個?
對不起,我不能有更多的幫助 - 就像我說我沒有真正玩過ASP.NET MVC。
如果您使用的是MVC,那麼開發的關鍵就是將邏輯放在視圖和控制器之外。在我看來,像你在WebForms開發軌道上比在MVC軌道上更好。
之所以這麼說,我用這樣的檢查做了很多我的網頁的管理員檢查:
<% if ((bool)ViewData["Admin"]) { %>
<!-- Show admin controls here -->
<% } %>
但如果你試圖建立實際的邏輯到視圖,那麼你需要找出你可以推回到控制器做什麼工作,並使視圖儘可能愚蠢,根據發送給它的標誌。
如果顯示根據角色變化 - 變化很小 - 那麼我會在視圖中進行檢查。如果根據角色限制某些視圖,那麼我會在控制器中進行檢查。如果視圖完全不同(這很難想象),那麼每個角色的單獨視圖可能是合適的。
您可能希望將某些特定於角色的視圖組件抽象爲部分視圖以簡化視圖邏輯 - 基本上,您只需根據角色檢查是否包含部分視圖。
此外,除了檢查「IsAuthenticated」之外,我還會將角色檢查邏輯移至控制器,並根據角色將視圖信息傳遞給包含/排除哪些元素。這使得實際的業務邏輯不會流血到您的視圖中。
在我的項目中,我需要維護分支信息。系統管理員應該能夠查看/維護所有分支信息。分支管理員應該只能看到/維護他們自己的分支信息。我想兩個不同的看法。 – 2011-03-17 22:19:59
是啊,這是東西,困擾着我,以及...但在同一時間,它似乎是可笑的加載完全不同的觀點,這樣一個小的變化。
btw 你是如何在你的控制器中設置的。 現在,我的控制器看起來像下面的代碼,我認爲這是不正確的。
[Authorize(Roles = "Admin, Member")]
public ActionResult RegistrationInformation()
{
return View();
}
我有所有其他模型擴展的基礎模型。在這個模型中,我已經加載了用戶的角色。它基於httpcontext.user.isinrole()方法。所有視圖都是強類型的,期望基本模型類型。 因此,我可以隨時檢查所有視圖,如Model.CurrentUser.IsInRoles(Role1 | Role2)。不僅在當然的意見,而且在洞應用。
我想完全控制這在視圖中,我發現:
<% if (User.IsInRole("Super User")) { %>
<h1>Hello world!</h1>
<% } %>
適用於大多數場景。它也可以讓你輕鬆地爲其他角色做條件格式,例如「Content Manager」,「Registered」等。
我喜歡Todd Smith的回答,因爲你可能會改變Admin角色的名字,只需要進行一次更改,而如果將「超級用戶」或「管理員」字符串直接放入視圖中,則無論使用該值,都必須對其進行更改。
- 1. 如何按角色爲不同用戶創建多個視圖?
- 2. 如何根據用戶顯示不同的視圖/ HTML頁面?
- 3. 根據用戶角色顯示不同的主頁
- 4. 根據用戶角色呈現不同的視圖ASP.NET MVC 5
- 5. 如何根據角色創建角色和管理用戶
- 6. 如何根據用戶在angularjs中的角色顯示不同的菜單項?
- 7. 在iphone中如何根據用戶角色顯示不同的選項卡
- 8. 如何根據ASP.NET MVC中登錄的用戶角色創建不同的視圖?
- 9. 如何在用例圖中顯示給不同用戶的不同角色?
- 10. 根據用戶的角色顯示的單一視圖中的側菜單不同的內容
- 11. 針對具有不同權限的不同用戶顯示不同的視圖
- 12. 根據用戶角色顯示/隱藏Zend視圖中的元素?
- 13. 根據用戶的角色在菜單中顯示不同的內容
- 14. 根據salesforce中的角色創建視圖
- 15. 根據用戶角色排序我的顯示數據
- 16. Yii框架:根據用戶角色的不同視圖(在actionIndex上)
- 17. Liferay中具有不同角色的用戶的不同風格
- 18. 對不同角色的用戶顯示不同的頁面
- 19. 具有不同角色但離散數據的用戶模型?
- 20. 根據WPF應用程序中的角色創建角色和管理用戶
- 21. 如何應用if-else條件向具有不同用戶角色的人顯示不同菜單?
- 22. 針對不同用戶角色的不同視圖集
- 23. 如何根據命令請求創建和顯示視圖?
- 24. 如何根據登錄用戶的狀態顯示視圖?
- 25. 如何根據網站用戶創建單獨的視圖
- 26. 根據Moodle上的用戶角色顯示/隱藏課程
- 27. 根據用戶在Symfony2中的角色顯示錶單字段?
- 28. 根據WordPress中的多個用戶角色顯示內容
- 29. 根據WPF中的用戶角色顯示/隱藏控件
- 30. 根據創建它的用戶角色排序文章
我已經做了同樣的事情,但我無法找到控制器的IsAdmin ..爲什麼這樣呢? – Neel 2013-06-12 09:48:05
這是你自己添加的輔助方法。 – 2013-06-13 16:48:24