簡體   English   中英

如何檢查用戶角色是否具有對特定視圖的讀寫權限

[英]How to check if user role has read/write access to a specific view

我有一個ASP.NET MVC 4應用程序。 我正在嘗試實現一種解決方案,其中檢查用戶是否可以訪問視圖,如果不能,則顯示錯誤。 如果用戶可以訪問視圖,那么我需要檢查該用戶是否具有對該視圖的read accessread and edit access 如果用戶具有讀取訪問權限,則僅顯示普通的詳細信息視圖;如果具有讀取和編輯訪問權限,則用戶可以查看詳細信息視圖或編輯數據。

這樣的事情可能嗎? 我嘗試瀏覽了在Codeplex上找到的幾個入門工具包,但找不到想要的東西。 如何實施? 如果可能,如果有人知道我可以下載的任何示例項目,那么我將不勝感激。 我喜歡遍歷代碼,因此可以學到更多。

我希望所有這些都是數據庫驅動的。

您應該更多地研究AuthorizeAttribute以及如何使用角色。 基本上,您給用戶角色(可以從數據庫中獲取),並且對於希望限制應用程序訪問的每個視圖,都將Authorize屬性與角色一起添加。 默認情況下,我認為您只能限制訪問或沒有訪問權限,但是您可以覆蓋並編寫自定義屬性,以使您感興趣的行為。

或者,您可以在控制器中管理用戶權限。 由於您知道經過身份驗證的用戶角色並可以訪問它們,因此您可以在控制器中執行檢查並從中創建視圖(禁用的輸入等)。

有關

正如@Marcus所說,您應該使用Attribute。 當操作開始時,您可以檢查用戶的角色,他是否有權訪問:

public class AttributeForTestAttribute : ActionFilterAttribute
{
    public int RoleCanAccess { get; set; }

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
          base.OnActionExecuting(filterContext);

          //your validation here..
          //for example:

          if(_currentUser.Role < RoleHasAccess )
          {
            //user has not access to this action, redirect him to home page. 

            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" }, { "returnUri", filterContext.HttpContext.Request.RawUrl } });
          }
          else
          {
            // user has access to this action
          }
    }
}

並在控制器中使用您的屬性:

    [AttributeForTest(RoleHasAccess = 2)]
    public ActionResult SaveProduct(Product product)
    {

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM