我最近问过为什么一些代码没有关于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>
}
这次我的问题是:
为什么我登录或,我只看到菜单,你应该只看到你是否登录?
无论我是否登录,我都会看到经过身份验证的用户菜单。我需要在控制器中更新一些东西吗?
答案 0 :(得分:1)
根据MSDN,Request.LogonUserIdentity.IsAuthenticated
:
获取当前用户的WindowsIdentity类型。
您很可能正在使用FormsAuthentication,并希望使用(MSDN)Request.IsAuthenticated
。
获取一个值,该值指示请求是否已经过身份验证。
修改强>
我查看了用于执行此逻辑的代码,我们使用HttpContext.User.Identity.IsAuthenticated
(MSDN)方法来执行此类分支,而不是Request属性。也许这就是你的问题所在。
@if(HttpContext.Current.User.Identity.IsAuthenticated){...}