0

最近、かみそりの構文に関してコードが機能しない理由について尋ねましたが、同じコードで新しい質問に戻ってきました。

        @if(Request.LogonUserIdentity.IsAuthenticated){
            <ul id="menu">
                <li>@Html.ActionLink("Location", "Index", "Location")</li>
                <li>@Html.ActionLink("Service", "Index", "Service")</li>
                <li>@Html.ActionLink("Service Assignment", "Index", "ServiceAssignment")</li>
                <li>@Html.ActionLink("Content Management", "Index", "Content")</li>
            </ul>                
        }else{
           <ul id="menu">
                <li>@Html.ActionLink("Location", "Index", "Location")</li>
                <li>@Html.ActionLink("Map", "Map", "Home")</li>
                <li>@Html.ActionLink("Help", "Help", "Home")</li>
            </ul>
        }

今回の私の質問は次のとおりです。

ログインまたはログアウトしている場合にメニューしか表示されず、ログインしている場合にのみ表示されるのはなぜですか?

つまり、ログインしているかどうかに関係なく、認証されたユーザーのメニューが表示されます。コントローラーで更新する必要があるものはありますか?

4

1 に答える 1

1

MSDNによると、次のようになりRequest.LogonUserIdentity.IsAuthenticatedます。

現在のユーザーの WindowsIdentity 型を取得します。

FormsAuthentication を使用している可能性が高く、( MSDN )を使用したいと考えていますRequest.IsAuthenticated

リクエストが認証されたかどうかを示す値を取得します。

編集

このロジックを実行するために使用するコードを調べたところ、Request プロパティではなく、HttpContext.User.Identity.IsAuthenticated( MSDN ) メソッドを使用してこのタイプの分岐を実行しています。おそらく、これがあなたの問題があるところです。

@if(HttpContext.Current.User.Identity.IsAuthenticated){...}
于 2013-04-11T16:08:38.567 に答える