0
其他人在MVC應用程序中如何執行細粒度的訪問控制?即用戶可能與多個對象有關並且對每個對象具有不同的訪問需求。這可以通過使用asp.net標識聲明/角色來實現嗎?還是我必須扮演我自己的角色?如何在asp.net MVC應用程序中執行細粒度訪問控制。
如果我需要推出自己的產品,是否有任何設計模式可以遵循?
其他人在MVC應用程序中如何執行細粒度的訪問控制?即用戶可能與多個對象有關並且對每個對象具有不同的訪問需求。這可以通過使用asp.net標識聲明/角色來實現嗎?還是我必須扮演我自己的角色?如何在asp.net MVC應用程序中執行細粒度訪問控制。
如果我需要推出自己的產品,是否有任何設計模式可以遵循?
毫無疑問,有很多方法可以做到這一點,但asp.net-MVC引線本身的AuthorizeAttribute的可擴展性,如:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class ActionPermissionAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
// Override OnAuthorization, not AuthorizeCore as AuthorizeCore will force user login prompt rather than inform the user of the issue.
var controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
var action = filterContext.ActionDescriptor.ActionName;
bool authorised = ... // Check permissions here
if (!authorised)
throw new UnauthorizedAccessException("You are not authorised to perform this action.");
base.OnAuthorization(filterContext);
}
}
這可以被應用到控制器(或基本控制器)所以不需要每一個動作。
實際檢查權限可以像想要的那樣簡單或複雜 - 例如,數據庫中的存儲控制器+操作+活動目錄組將允許動態更改權限。