バックオフィスアプリケーションとして使用されるASP.NETMVCアプリケーションに認証Cookieを送信するASP.NETアプリケーションがあります。
認証Cookieのすべてのコントローラーアクションをチェックするグローバルフィルターを追加しました。Cookieが存在する場合、ユーザーはページに入ることができます。
コードは次のようになります。
public class SecurityFilter : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
{
// TODO: For some reason .AUTHCookie cookie isn't exist in request context of filter,
HttpCookie cookie = filterContext.RequestContext.HttpContext.Request.Cookies[".AUTHCookie "];
if (cookie != null) {
Application_BeginRequest
反対側からは、Global.asaxファイルのイベントでASP.NETアプリケーションから送信されたCookieを確認できます。
クッキーが消えた場所と理由は?MVCリクエスト処理パイプラインのどの部分でCookieが破棄されましたか?
protected void Application_BeginRequest(object sender, EventArgs e)
{
var cookies = HttpContext.Current.Request.Cookies;
// HERE I CAN SEE BOTH cookies. In filter action only one cookie was found. The authentication cookie is thrown somewhere ...
}