总是看到“登录菜单”

时间:2013-04-11 16:03:24

标签: asp.net-mvc-3 razor

我最近问过为什么一些代码没有关于razor语法的问题,现在我回到了新问题并使用相同的代码:

        @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>
        }

这次我的问题是:

为什么我登录,我只看到菜单,你应该只看到你是否登录?

无论我是否登录,我都会看到经过身份验证的用户菜单。我需要在控制器中更新一些东西吗?

1 个答案:

答案 0 :(得分:1)

根据MSDNRequest.LogonUserIdentity.IsAuthenticated

  

获取当前用户的WindowsIdentity类型。

您很可能正在使用FormsAuthentication,并希望使用(MSDNRequest.IsAuthenticated

  

获取一个值,该值指示请求是否已经过身份验证。

修改

我查看了用于执行此逻辑的代码,我们使用HttpContext.User.Identity.IsAuthenticatedMSDN)方法来执行此类分支,而不是Request属性。也许这就是你的问题所在。

@if(HttpContext.Current.User.Identity.IsAuthenticated){...}