[英]ASP.Net MVC & Memberships
對於我要實現的目標,我將不勝感激:
問題:
我的解決方案:
希望對您有所幫助,感謝您的時間/精力!
陽光明媚
一種可能的解決方案是將控制點轉換為控制器動作中的視圖屬性(盡管這些可能是相同的東西,但不清楚您的問題)。 這樣的想法是,您的控制點將轉換為有意義的視圖方向,例如“ AllowEdit”,“ AllowSave”,“ AllowDetailedView”等。這些將成為ViewData中的條目。
使用基本控制器類擴展Controller並為其提供ControlPoint集合。 讓您的過濾器在控制器中填充此集合。 讓基本控制器的OnActionExecuted方法使用此集合,如果使用ViewResult,則使用適當的值填充View指令的ViewData。 單個控制器動作也可以使用ControlPoint集合來確定是否需要根據單個視圖的數據提供數據,從而為單個視圖提供數據。
在您看來,不是依靠控制點本身,而是依靠基本控制器確定的視圖方向。 這樣,您已將視圖與控制點邏輯分離。 視圖僅以對視圖有意義的方式對視圖數據進行操作,而不對在應用程序上下文中有意義的基於權限的數據進行操作。 視圖不關心如何或為什么設置特定指令,它僅需要根據指令的值進行適當渲染。
嗯,您不能簡單地創建一個模板系統來為用戶分配角色嗎? 即創建具有角色“ CustomerService”和“ ConfigurationEditor”的用戶模板“超級用戶”,然后像往常一樣使用角色系統(即Roles.IsUserInRole(username,rolename))?
對於操作,您可以使用
[Authorized(Roles="CustomerService,CustomerServiceAdmin")]
public ActionResult Edit(...)
{
}
對於視圖,您使用
<% if (Roles.IsUserInRole(Context.User.Name, "CustomerService")) %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.