フォーム認証を使用する ASP.NET MVC 4 アプリケーションがあります (ASP.NET MVC 4 モバイル テンプレートから始めました)。また、モバイル デバイスをサポートする表示モード機能も追加しました。ただし、フォーム認証は、これらの異なる表示モードでは機能しないようです。
Global.asax Application_Start には、
DisplayModeProvider.Instance.Modes.Insert(1, new DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
iPhoneの表示モードを登録します。
~/Views/Shared には、デスクトップ ブラウザー用の _Layout.cshtml と iPhone 用の _Layout.iPhone.cshtml があります。~/Views/Home には、デスクトップ ブラウザー用の Index.cshtml と iPhone 用の Index.iPhone.cshtml があります。~/Views/Account には、ASP.NET MVC 4 モバイル Web テンプレート (インデックス、ログイン、登録など) に付属する標準の .cshtml ファイルがあります。
FilterConfig.cs RegisterGlobalFilters に、filters.Add(new System.Web.Mvc.AuthorizeAttribute()); を追加しました。そのため、サイト内の任意の場所に移動するには認証が必要です (Login および Register アクション メソッドで [AllowAnonymous] を持つ AccountController を除く)。
これはすべて基本的なものであり、正しく設定されています。(デスクトップ ブラウザーと iPhone ブラウザーの両方から) ブラウザーでサイトに移動すると、表示モードの設定/構成がうまく機能し、通常の .cshtml ファイルまたは iPhone 固有のファイルのいずれかに移動します。
この問題は、フォーム認証を追加するときに発生します。
初めてサイトにアクセスしたとき、認証されていないため、(予想どおり) ログイン ページにリダイレクトされます。URL は として表示されhttp://localhost:63087/Account/Login?ReturnUrl=%2f
ます。ログイン後、ルートに戻り、正しい表示モードにリダイレクトされます。大丈夫だ。
ただし、URL は変更されません。のままhttp://localhost:63087/Account/Login?ReturnUrl=%2f
です。これは問題です。今後のナビゲーションが混乱し、ログインページに戻ります (既にログインして認証されているにもかかわらず)。
この問題はどのように修正できますか?
複数の表示モードを持つ ASP.NET MVC 4 アプリケーションをフォーム認証で正しく動作させるにはどうすればよいですか?
ありがとう。