You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 2中如何根据登录用户控制UL标签的显示?

使用Razor身份验证控制
    标签显示的最佳方案

完全可以用Razor的身份验证代码来包裹这些内容,这其实就是ASP.NET Core中控制登录/未登录用户界面展示的标准且简洁的做法。

你只需要用User.Identity.IsAuthenticated这个判断条件,分别包裹两个<ul>区块就行,系统会自动根据用户的登录状态渲染对应的菜单:

<!-- 已登录用户菜单 -->
@if (User.Identity.IsAuthenticated)
{
    <ul class="dropdown-menu dropdown-menu-right">
        <li class="dropdown-header">Profile</li>
        <li>
            <a tabindex="-1" asp-area="" asp-controller="Manage" asp-action="Index">
                <i class="si si-envelope-open pull-right"></i>
                <span class="badge badge-primary pull-right">3</span>Inbox
            </a>
        </li>
        <li>
            <a tabindex="-1" asp-area="" asp-controller="Manage" asp-action="Index">
                <i class="si si-user pull-right"></i>
                <span class="badge badge-success pull-right">1</span>Profile
            </a>
        </li>
        <li>
            <a tabindex="-1" href="javascript:void(0)">
                <i class="si si-settings pull-right"></i>Settings
            </a>
        </li>
        <li class="divider"></li>
        <li class="dropdown-header">Actions</li>
        <li>
            <a tabindex="-1" asp-area="" asp-controller="Account" asp-action="Lockout">
                <i class="si si-lock pull-right"></i>Lock Account
            </a>
        </li>
        <li>
            <a tabindex="-1" asp-area="" asp-controller="Account" asp-action="Logout">
                <i class="si si-logout pull-right"></i>Log out
            </a>
        </li>
    </ul>
}

<!-- 未登录用户菜单 -->
@if (!User.Identity.IsAuthenticated)
{
    <ul class="dropdown-menu dropdown-menu-right">
        <li class="dropdown-header">Actions</li>
        <li>
            <a tabindex="-1" asp-area="" asp-controller="Account" asp-action="Login">
                <i class="si si-logout pull-right"></i>Login
            </a>
        </li>
        <!-- 可补全未登录状态下的其他操作,比如注册 -->
        <li>
            <a tabindex="-1" asp-area="" asp-controller="Account" asp-action="Register">
                <i class="si si-user-plus pull-right"></i>Register
            </a>
        </li>
    </ul>
}

补充说明:

  • 这种服务器端渲染判断比前端JS判断更安全,因为前端逻辑容易被篡改,而服务器端判断基于用户的身份验证票据,无法轻易伪造
  • 你也可以简化代码结构,用@else将两个区块串联:第一个@if包裹已登录菜单,紧接着@else包裹未登录菜单,逻辑完全一致
  • 要确保你的项目已经配置了ASP.NET Core身份验证中间件,User.Identity才能正确获取用户的登录状态

内容的提问来源于stack exchange,提问作者dinotom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:52:22