ASP.NET MVC 4 アプリケーションがあります。ログインフォームの下にあるチェックボックスを記憶できるシンプルなメンバーシッププロバイダーを使用しています。チェックを入れると、ログイン日から 100 日で有効期限が切れる永続的な Cookie .ASPXAUTH が作成されます。そして、アプリケーションのメインメニューを除いて、すべてが正常に機能します。
メニューの一部は、管理者ユーザーのみが使用できます。私が使う:
@if (User.IsInRole("Administrator")) { @Html.Partial("_MainMenuPartial") }
通常のユーザーに対してレンダリングされないようにロックします。このアプローチは、システムにログインした直後にうまく機能します。しばらくして戻ってきて、永続的な Cookie を使用して認証すると、ログインできますが、
@User.IsInRole("Administrator")
「False」を返すため、管理メニュー項目が表示されません。同時に
@User.Identity.Name
適切なログイン名を返し、
@User.Identity.IsAuthenticated
「True」を返します。これは、永続的な Cookie が正常に機能することを証明しています。ユーザーがシステムによって認証されているにもかかわらず、ユーザー ロールにアクセスできないのはなぜですか?