添加了一個AuthorizeImage事件處理程序來映像訪問限制。當我試圖檢查用戶名和身份驗證狀態時注意到以下幾點:圖像Resizer在事件處理程序中的User.Identity
下面不會導致異常,但似乎會破壞它。無論是否驗證,都會顯示未找到圖像的默認圖標。 測試this.User =相同的結果。 HttpContext.Current.User =相同的結果
Config.Current.Pipeline.AuthorizeImage += delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e)
{
if (context.User.Identity.IsAuthenticated) { context.Response.Redirect("http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif"); }
};
下面的工作就好了(this.User和HttpCOntext.Current.User以及)
Config.Current.Pipeline.AuthorizeImage += delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e)
{
context.Response.Redirect("http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif");
};
這總是重定向
Config.Current.Pipeline.AuthorizeImage += delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e)
{
if (context.User == null)
context.Response.Redirect("http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif");
};
我開始在Application_Start中測試,但實際上也嘗試了Application_PostAuthenticateRequest。雖然結果相同。我通過自定義代碼進行身份驗證,但使用標準formsatuhentication來設置cookie。 [Authorize]在應用程序中正常工作。任何可能在這裏出錯的建議?
請,如果你得到了「未找到'圖標,直接打開URL並獲取實際的錯誤信息。 – 2012-07-30 22:46:17
抱歉應該補充一點。我只收到nullreference異常,「對象引用未設置爲對象的實例」。標記包含「if(context.User.Identity.IsAuthenticated){context.Response.Redirect(」http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif「);}」的行。 所以context.User沒有實例化它似乎。問題是爲什麼。由於身份驗證在其他方面工作(和@ User.Identity.Name在視圖中給我的用戶名)我懷疑有關事件處理程序的東西? – Baserz 2012-07-30 22:57:28
ASP.NET不會爲匿名用戶填充context.User。如果您不是匿名的,那麼您的代碼在PostAuthorize之前不會加載用戶,這是一個錯誤。 – 2012-07-30 23:04:01