我花了一個多小時試圖弄清楚這一點,然後我在這裏貼出來。幾分鐘後,它襲擊了我。
首先,我創建了一個屬性
public class AlwaysAllowAnonymousAttribute : Attribute {}
其次,我打上我的行爲或控制器與上述屬性
最後,在我的ActionFilter我這樣做
public class VerifyResourceAccess : ActionFilterAttribute, IActionFilter
{
void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
{
var actionAttributes = filterContext.ActionDescriptor.GetCustomAttributes(typeof(AlwaysAllowAnonymousAttribute), false);
var controllerAttributes = filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(AlwaysAllowAnonymousAttribute), false);
bool alwaysAllow = (actionAttributes.Length > 0) || (controllerAttributes.Length > 0);
if (!alwaysAllow) {
/* ... Some logic for checking if this user is allowed to access this resource ... */
}
base.OnActionExecuting(filterContext);
}
}
的任何行動或標有該屬性的控制器將始終允許對其進行訪問。
您是否嘗試在您的過濾器上添加參數並嘗試根據該參數忽略?讓說[CustomAttribute(「IgnoreThis」)] –