global.asax Application_AuthenticateRequest メソッドと、Authorize 属性 filterContext の HttpContext およびコントローラー Context で、HttpContext オブジェクトの値が異なります。
シングル サインオンを実行するようにアプリケーションを設定しました。これが私のweb.configです:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" name="FormsAuth" timeout="2880000" domain="domain.com" slidingExpiration="true" defaultUrl="~/home/index"/>
</authentication>
次にログインすると、ユーザーの検証後、認証 Cookie が設定されます。
FormsAuthentication.SetAuthCookie(userName, true);
グローバル asax Application_AuthenticateRequest メソッドでブレークポイントにヒットすると、Request.IsAuthenticated は true になりますが、Authorize 属性の OnAuthorize メソッドにヒットすると、filterContext.HttpContext.Request.IsAuthenticated は false になります。ユーザーが有効であっても、ページは常にログオン ページにリダイレクトされます。
誰かがなぜそうなのか説明できますか? または、asp.net mvc の httpcontext の内部動作を説明しているブログ フォーラム。この場合、Core ASP.NET httpcontext と MVC httpcontext の値が異なるようです。