MVC -退出后,布局保持显示菜单

本文关键字:显示 菜单 布局 退出 MVC | 更新日期: 2023-09-27 18:08:50

我目前正在做一个网站,遵循多视指南。我有两个主要的问题与web应用程序:

  1. 注销后,以下if语句下的项目仍然显示:

                        @if (User.Identity.IsAuthenticated)
                    {
                        <li class="nav-item btn-group">
                            <a class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fa fa-user"></i> <span class="hidden-sm-down"> @User.Identity.Name </span> </a>
                            <div class="dropdown-menu">
                                <a class="dropdown-item" asp-controller="Account" asp-action="Account"> Account <i class="fa fa-user" aria-hidden="true"></i> </a>
                                <a class="dropdown-item" asp-controller="Settings" asp-action="Settings"> Settings <i class="fa fa-gear" aria-hidden="true"></i> </a>
                                <div class="dropdown-divider"></div>
                                <a class="dropdown-item" asp-controller="Logout" asp-action="Logout"> Logout <i class="fa fa-sign-out" aria-hidden="true"></i> </a>
                            </div>
                        </li>
                    }
    
  2. 第二个问题是对登录的用户隐藏菜单:

                        @if (!User.Identity.IsAuthenticated)
                    {
                        <li class="nav-item @(ViewContext.RouteData.Values["Controller"].ToString() == "Contact" ? "active" : "")">
                            <a class="nav-link" asp-controller="Contact" asp-action="Contact">Contact</a>
                        </li>
                        <li class="nav-item @(ViewContext.RouteData.Values["Controller"].ToString() == "About" ? "active" : "")">
                            <a class="nav-link" asp-controller="About" asp-action="About">About</a>
                        </li>
                    }
    

如果User.Identity.IsAuthenticated返回一个布尔值,我不确定为什么这不会工作。

我的导航栏在退出后显示菜单的图片

如果需要,我会提供更多的细节。提前感谢!

MVC -退出后,布局保持显示菜单

当您使用SignOut()时,用户在下一个(http)请求时注销。

  1. 重定向
  2. 或强制注销。这似乎只能在非核心ASP中实现。Net:要立即注销,使用默认值清除User属性:

    FormsAuthentication.SignOut();
     //log off immediately
     HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);