[英]How to check if user role has read/write access to a specific view
我有一個ASP.NET MVC 4
應用程序。 我正在嘗試實現一種解決方案,其中檢查用戶是否可以訪問視圖,如果不能,則顯示錯誤。 如果用戶可以訪問視圖,那么我需要檢查該用戶是否具有對該視圖的read access
或read 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.