我有一個自定義的授權屬性,它看起來像這樣到目前爲止: (我會稍後添加更多的邏輯,我只是想先看到這個工作)。自定義授權屬性和表單身份驗證
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
}
}
然後我就按照屬性放置到一個控制器:
[CustomAuthorize(Order = 0)]
public class MyController : Controller
現在,
這一切運作良好&花花公子,直到我的窗體身份驗證用完。
即
<forms loginUrl="~/myController/myMethod" timeout="30" /> // this timout expires.
超時後,我的自定義授權屬性不再被擊中,相反,它似乎窗體身份驗證模塊將接管。
超時之後,窗體auth模塊只返回由上面webconfig代碼中指定的動作呈現的視圖。
我想攔截超時過期時的onAuthorize操作,所以我可以詢問HttpContext的某些事情,並有條件地重定向用戶。
有沒有人做過類似的事情?
當超時發生時,您如何知道自定義授權屬性不再被點擊?在你的例子中,自定義授權屬性什麼都不做,只是把控制權交給了AuthorizeAttribute,所以這就是你會看到的行爲。無論身份驗證狀態如何,它總是應該打CustomAuthorizeAttribute。您可以在Global.asax中的認證周圍抓取事件,例如FormsAuthentication_OnAuthenticate。 –