使用依賴注入校長授權成分並不需要訪問該業務數據庫,委託了一個「是本公司經營授權」查詢的只是注入能力。所以在psuedocode;
class Authorization()
{
public enumCheckAccessResult IsAuthorized(IIdentity userIdentity, ISecurable itemToCheckForAccess IAuthorizationExtension extension)
{
enumCheckAccessResult result = checkMyLocalAuthorisationStore(userIdentity, itemToCheckForAccess);
if(result == enumAccessCheckResult.SecurableNotFound)
{
result = extension.CheckExternalAuthorisationStore(userIdentity, itemToCheckForAccess)
}
}
}
以我的僞代碼的授權類接受一個IAuthorizationExtension實例,其可通過授權類的任何消費者提供的擴展點(dependeny注射)。請注意,如果我們的本地商店無法找到可安全(即要安全檢查的項目),那麼我們只使用此擴展,所以IAuthorisationExtension的作者不能覆蓋我的授權類的決定 - 如果我的授權類說「拒絕訪問」,我們不會然後諮詢擴展。
取決於它是否是業務規則,您可能確實將其放入您的業務邏輯中。 –